SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
Ingeniería Técnica Industrial
                                                                   Fundamentos de Informática


                         Tema 3. El proceso de compilación, del código fuente al código máquina



TEMA 3. EL PROCESO DE COMPILACIÓN,
            DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA


    Programa: Algoritmo (secuencia no ambigua, finita y ordenada de
instrucciones para la resolución de un determinado problema) traducido a un
lenguaje de programación, de modo que un ordenador es capaz de ejecutarlo.
   Programación: Elaboración de un programa de manera que éste sea:

     − Correcto    Un programa será correcto si hace lo que debe hacer, de
       modo que se deben especificar de manera muy clara cuáles son los
       datos sobre los que se trabajarán y lo que se debe hacer con ellos.
       Todo debe ser documentado y probado antes de desarrollarlo.

     − Eficiente  Debe consumir la menor cantidad de recursos (tiempo y/o
       memoria) posible.

     − Claro     Es muy importante la claridad y legibilidad de todo programa,
       ya que facilitará al máximo la tarea de mantenimiento posterior del
       software.

     − Modular     Los programas suelen subdividirse en subprogramas
       (módulos), para reducir la complejidad de aquella parte que se está
       implementando y facilitar la reutilización de código.


   Para la elaboración de un programa hay que distinguir entre las siguientes
dos fases:
     − Fase de compilación y linkado (link, montado o enlace)

     − Fase de ejecución de un programa




                                                                                 Página 1 de 5
Ingeniería Técnica Industrial
                                                                                                                                       Fundamentos de Informática


                                            Tema 3. El proceso de compilación, del código fuente al código máquina



3.1 Fase de compilación y linkado (link, montado o enlace)
    Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado
directamente por un ordenador, sino que debe ser traducido a lenguaje máquina.
   Las etapas por las que debe pasar un programa escrito en un lenguaje de
programación, hasta poder ser ejecutable son:
                                                                                                                       Programa fuente: Programa escrito
                                                                                                                     en un lenguaje de alto nivel (texto
                   Programa Fuente                                                                                   ordinario que contiene las sentencias del
                        (nombre.c)
                                                       DEPURACIÓN del programa si se producen errores en ejecución
                                                                                                                     programa     en     un    lenguaje    de
                                                                                                                     programación). Necesita ser traducido a
       Con
        errores                                                                                                      código máquina para poder ser
                    COMPILADOR                                                                                       ejecutado.
                                                                                                                       Compilador: Programa encargado
                              Sin errores




                                                                                                                     de traducir los programas fuentes
                                                                                                                     escritos en un lenguaje de alto nivel a
 Librerías         Programa Objeto                                                                                   lenguaje máquina y de comprobar que
                        (nombre.o)
                                                                                                                     las llamadas a las funciones de
                                                                                                                     librería se realizan correctamente.
                     ENLAZADOR                                                                                         Programa (o código) objeto: Es el
                                                                                                                     programa fuente traducido (por el
                            Sin errores




                                                                                                                     compilador) a código máquina. Aún no
                                                                                                                     es directamente ejecutable.
                  Programa ejecutable
                        (nombre.exe)                                                                                   Programa Ejecutable: Traducción
                                                                                                                     completa a código máquina, realizada
Figura 1. Proceso de transformación de un programa fuente a
                  un programa ejecutable
                                                                                                                     por el enlazador, del programa fuente
                                                                                                                     y que ya es directamente ejecutable.
      Linker (montador o enlazador): Es el programa encargado de insertar al
programa objeto el código máquina de las funciones de las librerías (archivos
de biblioteca) usadas en el programa y realizar el proceso de montaje, que
producirá un programa ejecutable .exe. Las librerias son una colección de
código (funciones) ya programado y traducido a código máquina, listo para
utilizar en un programa y que facilita la labor del programador.


                                                                                                                                                     Página 2 de 5
Ingeniería Técnica Industrial
                                                                    Fundamentos de Informática


                          Tema 3. El proceso de compilación, del código fuente al código máquina


   Como cada lenguaje de programación tiene unas reglas especiales (sintaxis)
debe existir un compilador específico para cada lenguaje de programación.
   Si el programa fuente es sintácticamente correcto, el compilador generará el
código objeto, en caso contrario mostrará una lista con los errores encontrados,
no generándose ningún programa objeto, para que procedamos a su depuración
    Los compiladores emiten mensajes de error o de advertencia durante las
fases de compilación, de enlace o de ejecución de un programa:
   • Los errores en tiempo de compilación son los que se producen antes de la
     ejecución del programa, durante el proceso de compilación del programa.
   • Los errores en tiempo de ejecución son los que se producen durante la
     ejecución del programa. Son los más difíciles de encontrar, no son
     detectados por el compilador, ya que son errores de lógica, no de sintaxis.
    Aunque al compilar un programa no de errores, el programa puede funcionar
incorrectamente y/o a dar errores durante su ejecución. Por ejemplo:
   • Un programa puede producir resultados erróneos, al equivocarnos
     (errores lógicos) al programar el algoritmo (sumar en vez de restar, etc.).
   • Un programa puede interrumpirse bruscamente, por ejemplo si tenemos
     que hacer una división y el divisor es cero, etc.
   Los errores que se pueden producir en la fase de compilación son:
   − Errores fatales: Son raros. Indican errores internos del compilador.
     Cuando ocurren la compilación se detiene inmediatamente.
   − Errores de sintaxis: Son los errores típicos de sintaxis. No detienen la
     compilación sino que al finalizar ésta se mostrará la lista con todos los
     errores encontrados. Algunos errores suelen ser consecuencia de otros
     cometidos con anterioridad. Con este tipo de errores no se puede obtener
     un programa objeto y por lo tanto tampoco el ejecutable.
   − Advertencias o avisos (warnings): Indican que hay líneas de código
     sospechosas que a pesar de no infringir ninguna regla sintáctica, el
     compilador las encuentra susceptibles de provocar un error. Cuando se
     detecta un warning la compilación no se detiene. Si en un programa
     fuente sólo se detectan warnings sí que se podrá obtener un programa
     objeto, que tras el linkado dará lugar a un programa ejecutable.



                                                                                  Página 3 de 5
Ingeniería Técnica Industrial
                                                                     Fundamentos de Informática


                           Tema 3. El proceso de compilación, del código fuente al código máquina


    Con respecto a los errores en tiempo de ejecución, encontrar la causa que
los provoca es una labor en ocasiones complicada, razón por la cual los EID
(Entornos Integrados de Desarrollo, p.ej. DevC++) nos proporcionan una
herramienta llamada Depurador que nos ayuda a encontrar los errores lógicos y
demás errores producidos en tiempo de ejecución.
    Un depurador (debugger), es un programa diseñado específicamente para la
detección, verificación y corrección de errores. Los depuradores nos permiten
trazar el programa (ejecutarlo sentencia a sentencia) y visualizar el contenido de
las variables y direcciones de memoria durante la ejecución del programa.
Además permiten alterar el flujo de ejecución del mismo, cambiar los valores de
las variables e introducir puntos de parada.


Pasos para la elaboración y ejecución de un programa:
   Los pasos a seguir los podemos resumir de la siguiente manera:
   1 º. Escribir el código fuente, por ejemplo con el editor del EID.
   2 º. Compilar el fichero fuente
   3 º. Si se producen errores de sintaxis (o warnings) volver al editor y eliminar
       los errores de sintaxis.
   4 º. Si no hay errores se obtendrá el código objeto y el enlazador construirá el
       archivo ejecutable.
   5 º. Una vez tengamos el archivo ejecutable, será el sistema operativo el
      encargado de colocar el programa en la memoria central y ejecutarlo.
   6 º. Comprobar el funcionamiento del programa.
   7 º. Si se detecta errores o un mal funcionamiento del programa, activar el
       depurador para trazar el programa y ejecutarlo sentencia a sentencia.
   8 º. Una vez que hayamos encontrado la causa del error, volveremos al editor
       y lo corregimos.
   9 º. El proceso de compilar, enlazar y ejecutar el programa lo repetiremos
       hasta que no se produzcan errores.



                                                                                   Página 4 de 5
Ingeniería Técnica Industrial
                                                                    Fundamentos de Informática


                          Tema 3. El proceso de compilación, del código fuente al código máquina




3.2 Fase de ejecución de un programa
    Una vez que tenemos el programa en lenguaje máquina, para poderlo
ejecutar hay que introducirlo en la memoria.
   1. Una utilidad del S.O. llamada cargador colocará el programa, y sus datos
      de entrada, en memoria principal, preparándolo para su ejecución.
   2. El S.O. le pasa el control a la C.P.U. para que comience la ejecución del
      programa, realizando la Unidad de Control los siguientes pasos (fases):
         Captación de la instrucción: Lee de la Memoria Principal la
         instrucción a ejecutar.
         Ejecución de la instrucción: Interpreta la instrucción leída y envía
         señales de control a las unidades que deban intervenir en su
         ejecución. Tras dicha ejecución se establece cuál será la siguiente
         instrucción a ejecutar.

3.3 El compilador de C. Características generales.

♦ El lenguaje C es un lenguaje muy potente y eficiente de nivel medio:
  combina elementos de lenguajes de alto nivel con la funcionalidad del
  lenguaje ensamblador. Es adecuado para la programación de sistemas.
♦ Es un lenguaje de propósito general (puede utilizarse para desarrollar
  sistemas operativos, gestores de bases de datos, etc).
♦ El código de C es muy portable: se puede adaptar el software escrito para un
  tipo de computadora a otra computadora sin hacer muchos cambios.
♦ El lenguaje C es un lenguaje estructurado: permite seccionar y esconder
  (mediante subrutinas y variables locales) del resto del programa toda la
  información e instrucciones necesarias para realizar una determinada tarea.
♦ El lenguaje C sólo tiene 32 palabras clave, (BASIC por ejemplo tiene 159).
♦ Suele incluir potentes librerías de funciones que aumentan su potencia.
♦ El lenguaje C es compilado, no interpretado. Un intérprete lee el código
  fuente de un programa línea a línea y las traduce online para que la CPU las
  pueda interpretar, pero no genera ningún programa objeto. Un compilador lee
  el programa entero, lo traduce y genera un código objeto directamente
  ejecutable y entendible por el microprocesador.

                                                                                  Página 5 de 5

Contenu connexe

Tendances

Universidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programaciónUniversidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programaciónKatherine Gonzales
 
Assembler apesteguia (1)
Assembler apesteguia (1)Assembler apesteguia (1)
Assembler apesteguia (1)tonytenorio2
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionjafp21
 
Lenguaje de programacion keneling gullo compu 1 []
Lenguaje de programacion keneling gullo compu 1 []Lenguaje de programacion keneling gullo compu 1 []
Lenguaje de programacion keneling gullo compu 1 []kenelinggullo
 
presentacion I BTP
presentacion I BTPpresentacion I BTP
presentacion I BTPcesia_97
 
Interprete vs compilador
Interprete vs compiladorInterprete vs compilador
Interprete vs compiladorElba Sepúlveda
 
Presentacion de procesadores de lenguajes
Presentacion de procesadores de lenguajesPresentacion de procesadores de lenguajes
Presentacion de procesadores de lenguajesDIEGO BAROJA
 
GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...
GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...
GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...Sarai Rodriguez
 
Computación
ComputaciónComputación
Computaciónkateshita
 
Estructura de un interprete
Estructura de un interpreteEstructura de un interprete
Estructura de un interpreteperlallamas
 
Generalidades del lenguaje ensamblador
Generalidades del lenguaje ensambladorGeneralidades del lenguaje ensamblador
Generalidades del lenguaje ensambladorsalvaradomar
 
Procesadores de lenguaje
Procesadores de lenguajeProcesadores de lenguaje
Procesadores de lenguajeeroque11
 

Tendances (20)

Compiladores iswi (parte 2)
Compiladores iswi (parte 2)Compiladores iswi (parte 2)
Compiladores iswi (parte 2)
 
Programacvion
ProgramacvionProgramacvion
Programacvion
 
Universidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programaciónUniversidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programación
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Assembler apesteguia (1)
Assembler apesteguia (1)Assembler apesteguia (1)
Assembler apesteguia (1)
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Lenguaje de programacion keneling gullo compu 1 []
Lenguaje de programacion keneling gullo compu 1 []Lenguaje de programacion keneling gullo compu 1 []
Lenguaje de programacion keneling gullo compu 1 []
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Bootstrapping
BootstrappingBootstrapping
Bootstrapping
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
presentacion I BTP
presentacion I BTPpresentacion I BTP
presentacion I BTP
 
Interprete vs compilador
Interprete vs compiladorInterprete vs compilador
Interprete vs compilador
 
Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)
 
Presentacion de procesadores de lenguajes
Presentacion de procesadores de lenguajesPresentacion de procesadores de lenguajes
Presentacion de procesadores de lenguajes
 
GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...
GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...
GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...
 
Computación
ComputaciónComputación
Computación
 
Estructura de un interprete
Estructura de un interpreteEstructura de un interprete
Estructura de un interprete
 
Generalidades del lenguaje ensamblador
Generalidades del lenguaje ensambladorGeneralidades del lenguaje ensamblador
Generalidades del lenguaje ensamblador
 
Procesadores de lenguaje
Procesadores de lenguajeProcesadores de lenguaje
Procesadores de lenguaje
 

En vedette

Cancer en menores de 18 años curso enarm cmn siglo xxi
Cancer en menores de 18 años curso enarm cmn siglo xxiCancer en menores de 18 años curso enarm cmn siglo xxi
Cancer en menores de 18 años curso enarm cmn siglo xxiPharmed Solutions Institute
 
Manual de las seis acciones para el fortalecimiento de la biblioteca escolar
Manual de las seis acciones para el fortalecimiento de la biblioteca escolarManual de las seis acciones para el fortalecimiento de la biblioteca escolar
Manual de las seis acciones para el fortalecimiento de la biblioteca escolarLupitapc
 
Desarrollo de las Habilidades Interpersonales en el trabajo
Desarrollo de las Habilidades Interpersonales en el trabajoDesarrollo de las Habilidades Interpersonales en el trabajo
Desarrollo de las Habilidades Interpersonales en el trabajoLeonel Ibarra
 
Liderazgo y educación I
Liderazgo y educación ILiderazgo y educación I
Liderazgo y educación IDiana Mtz
 
Acuerdo 717 sep 070314
Acuerdo 717 sep 070314Acuerdo 717 sep 070314
Acuerdo 717 sep 070314PrincessAnna80
 
Reatores 3 estagioop
Reatores 3 estagioopReatores 3 estagioop
Reatores 3 estagioopPaloma Lima
 
Liderazgo y educación i
Liderazgo y educación iLiderazgo y educación i
Liderazgo y educación iDiana Mtz
 
Nuevos ambientes de aprendizaje ensayo
Nuevos ambientes de aprendizaje ensayoNuevos ambientes de aprendizaje ensayo
Nuevos ambientes de aprendizaje ensayoAlvaro Paredes
 
Plan de clase Matemática I
Plan de clase Matemática IPlan de clase Matemática I
Plan de clase Matemática IDavid Narváez
 
Apuntes alterna
Apuntes alternaApuntes alterna
Apuntes alternaedikuroc
 
Manual de Pontif. Univ. de Valparaiso
Manual de Pontif. Univ. de ValparaisoManual de Pontif. Univ. de Valparaiso
Manual de Pontif. Univ. de ValparaisoJazmin Rojo Vilca
 
Guia de la actividad 3 unidad 3 semana 3
Guia de la actividad 3 unidad 3 semana 3Guia de la actividad 3 unidad 3 semana 3
Guia de la actividad 3 unidad 3 semana 3etgjrykh
 
Diabetes. Nutrición 4to semestre "A"
Diabetes. Nutrición 4to semestre "A"Diabetes. Nutrición 4to semestre "A"
Diabetes. Nutrición 4to semestre "A"Liz Macedo
 
Proyectos tipos
Proyectos tiposProyectos tipos
Proyectos tiposduberlisg
 

En vedette (20)

Cancer en menores de 18 años curso enarm cmn siglo xxi
Cancer en menores de 18 años curso enarm cmn siglo xxiCancer en menores de 18 años curso enarm cmn siglo xxi
Cancer en menores de 18 años curso enarm cmn siglo xxi
 
Formato
FormatoFormato
Formato
 
Manual de las seis acciones para el fortalecimiento de la biblioteca escolar
Manual de las seis acciones para el fortalecimiento de la biblioteca escolarManual de las seis acciones para el fortalecimiento de la biblioteca escolar
Manual de las seis acciones para el fortalecimiento de la biblioteca escolar
 
Desarrollo de las Habilidades Interpersonales en el trabajo
Desarrollo de las Habilidades Interpersonales en el trabajoDesarrollo de las Habilidades Interpersonales en el trabajo
Desarrollo de las Habilidades Interpersonales en el trabajo
 
Liderazgo y educación I
Liderazgo y educación ILiderazgo y educación I
Liderazgo y educación I
 
Sesion 8
Sesion 8Sesion 8
Sesion 8
 
Acuerdo 717 sep 070314
Acuerdo 717 sep 070314Acuerdo 717 sep 070314
Acuerdo 717 sep 070314
 
Reatores 3 estagioop
Reatores 3 estagioopReatores 3 estagioop
Reatores 3 estagioop
 
Liderazgo y educación i
Liderazgo y educación iLiderazgo y educación i
Liderazgo y educación i
 
Nuevos ambientes de aprendizaje ensayo
Nuevos ambientes de aprendizaje ensayoNuevos ambientes de aprendizaje ensayo
Nuevos ambientes de aprendizaje ensayo
 
Plan de clase Matemática I
Plan de clase Matemática IPlan de clase Matemática I
Plan de clase Matemática I
 
Apuntes alterna
Apuntes alternaApuntes alterna
Apuntes alterna
 
Manual de Pontif. Univ. de Valparaiso
Manual de Pontif. Univ. de ValparaisoManual de Pontif. Univ. de Valparaiso
Manual de Pontif. Univ. de Valparaiso
 
Guia de la actividad 3 unidad 3 semana 3
Guia de la actividad 3 unidad 3 semana 3Guia de la actividad 3 unidad 3 semana 3
Guia de la actividad 3 unidad 3 semana 3
 
Cartilla sas
Cartilla sasCartilla sas
Cartilla sas
 
Estrategia epidemiologica
Estrategia epidemiologicaEstrategia epidemiologica
Estrategia epidemiologica
 
Diabetes. Nutrición 4to semestre "A"
Diabetes. Nutrición 4to semestre "A"Diabetes. Nutrición 4to semestre "A"
Diabetes. Nutrición 4to semestre "A"
 
Informe final ultimo
Informe final ultimoInforme final ultimo
Informe final ultimo
 
Proyectos tipos
Proyectos tiposProyectos tipos
Proyectos tipos
 
Evaluacion
EvaluacionEvaluacion
Evaluacion
 

Similaire à Compilación código fuente a máquina

Similaire à Compilación código fuente a máquina (20)

Clase programas
Clase programasClase programas
Clase programas
 
Tercera unidad
Tercera unidadTercera unidad
Tercera unidad
 
Terceraunidad 130505194734-phpapp01
Terceraunidad 130505194734-phpapp01Terceraunidad 130505194734-phpapp01
Terceraunidad 130505194734-phpapp01
 
Traducción de un programa: compilación, enlace de un programa, errores en tie...
Traducción de un programa: compilación, enlace de un programa, errores en tie...Traducción de un programa: compilación, enlace de un programa, errores en tie...
Traducción de un programa: compilación, enlace de un programa, errores en tie...
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Trabajo de presentacion
Trabajo de presentacionTrabajo de presentacion
Trabajo de presentacion
 
Proyectos informaticos
Proyectos informaticosProyectos informaticos
Proyectos informaticos
 
Innovacionk m
Innovacionk mInnovacionk m
Innovacionk m
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 
Esquema basico del software
Esquema basico del softwareEsquema basico del software
Esquema basico del software
 
Sesion01 c++
Sesion01  c++Sesion01  c++
Sesion01 c++
 
Introduccion programacion
Introduccion programacionIntroduccion programacion
Introduccion programacion
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 
Reseña historica introd. a la programación
Reseña historica introd. a la programaciónReseña historica introd. a la programación
Reseña historica introd. a la programación
 
Lenguaje de programación [autoguardado].pptm
Lenguaje de programación [autoguardado].pptmLenguaje de programación [autoguardado].pptm
Lenguaje de programación [autoguardado].pptm
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 
Humbis lenguaje
Humbis lenguajeHumbis lenguaje
Humbis lenguaje
 
NOCIONES BASICAS DE INFORMATICA
NOCIONES BASICAS DE INFORMATICANOCIONES BASICAS DE INFORMATICA
NOCIONES BASICAS DE INFORMATICA
 
Lenguaje de Programacion
Lenguaje de ProgramacionLenguaje de Programacion
Lenguaje de Programacion
 

Plus de karlalopezbello

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetoskarlalopezbello
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetoskarlalopezbello
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2karlalopezbello
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1karlalopezbello
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3karlalopezbello
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2karlalopezbello
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1karlalopezbello
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-karlalopezbello
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacionkarlalopezbello
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtualkarlalopezbello
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_karlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 

Plus de karlalopezbello (20)

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetos
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetos
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-
 
Didactica del chat
Didactica del chatDidactica del chat
Didactica del chat
 
Didactica del foro
Didactica del foroDidactica del foro
Didactica del foro
 
Guia completa de_moodle
Guia completa de_moodleGuia completa de_moodle
Guia completa de_moodle
 
Publicacion de material
Publicacion de materialPublicacion de material
Publicacion de material
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacion
 
Actividades en moodle
Actividades en moodleActividades en moodle
Actividades en moodle
 
Plataforma moodle
Plataforma moodlePlataforma moodle
Plataforma moodle
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtual
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Transparencias7
Transparencias7Transparencias7
Transparencias7
 

Compilación código fuente a máquina

  • 1. Ingeniería Técnica Industrial Fundamentos de Informática Tema 3. El proceso de compilación, del código fuente al código máquina TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido a un lenguaje de programación, de modo que un ordenador es capaz de ejecutarlo. Programación: Elaboración de un programa de manera que éste sea: − Correcto Un programa será correcto si hace lo que debe hacer, de modo que se deben especificar de manera muy clara cuáles son los datos sobre los que se trabajarán y lo que se debe hacer con ellos. Todo debe ser documentado y probado antes de desarrollarlo. − Eficiente Debe consumir la menor cantidad de recursos (tiempo y/o memoria) posible. − Claro Es muy importante la claridad y legibilidad de todo programa, ya que facilitará al máximo la tarea de mantenimiento posterior del software. − Modular Los programas suelen subdividirse en subprogramas (módulos), para reducir la complejidad de aquella parte que se está implementando y facilitar la reutilización de código. Para la elaboración de un programa hay que distinguir entre las siguientes dos fases: − Fase de compilación y linkado (link, montado o enlace) − Fase de ejecución de un programa Página 1 de 5
  • 2. Ingeniería Técnica Industrial Fundamentos de Informática Tema 3. El proceso de compilación, del código fuente al código máquina 3.1 Fase de compilación y linkado (link, montado o enlace) Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado directamente por un ordenador, sino que debe ser traducido a lenguaje máquina. Las etapas por las que debe pasar un programa escrito en un lenguaje de programación, hasta poder ser ejecutable son: Programa fuente: Programa escrito en un lenguaje de alto nivel (texto Programa Fuente ordinario que contiene las sentencias del (nombre.c) DEPURACIÓN del programa si se producen errores en ejecución programa en un lenguaje de programación). Necesita ser traducido a Con errores código máquina para poder ser COMPILADOR ejecutado. Compilador: Programa encargado Sin errores de traducir los programas fuentes escritos en un lenguaje de alto nivel a Librerías Programa Objeto lenguaje máquina y de comprobar que (nombre.o) las llamadas a las funciones de librería se realizan correctamente. ENLAZADOR Programa (o código) objeto: Es el programa fuente traducido (por el Sin errores compilador) a código máquina. Aún no es directamente ejecutable. Programa ejecutable (nombre.exe) Programa Ejecutable: Traducción completa a código máquina, realizada Figura 1. Proceso de transformación de un programa fuente a un programa ejecutable por el enlazador, del programa fuente y que ya es directamente ejecutable. Linker (montador o enlazador): Es el programa encargado de insertar al programa objeto el código máquina de las funciones de las librerías (archivos de biblioteca) usadas en el programa y realizar el proceso de montaje, que producirá un programa ejecutable .exe. Las librerias son una colección de código (funciones) ya programado y traducido a código máquina, listo para utilizar en un programa y que facilita la labor del programador. Página 2 de 5
  • 3. Ingeniería Técnica Industrial Fundamentos de Informática Tema 3. El proceso de compilación, del código fuente al código máquina Como cada lenguaje de programación tiene unas reglas especiales (sintaxis) debe existir un compilador específico para cada lenguaje de programación. Si el programa fuente es sintácticamente correcto, el compilador generará el código objeto, en caso contrario mostrará una lista con los errores encontrados, no generándose ningún programa objeto, para que procedamos a su depuración Los compiladores emiten mensajes de error o de advertencia durante las fases de compilación, de enlace o de ejecución de un programa: • Los errores en tiempo de compilación son los que se producen antes de la ejecución del programa, durante el proceso de compilación del programa. • Los errores en tiempo de ejecución son los que se producen durante la ejecución del programa. Son los más difíciles de encontrar, no son detectados por el compilador, ya que son errores de lógica, no de sintaxis. Aunque al compilar un programa no de errores, el programa puede funcionar incorrectamente y/o a dar errores durante su ejecución. Por ejemplo: • Un programa puede producir resultados erróneos, al equivocarnos (errores lógicos) al programar el algoritmo (sumar en vez de restar, etc.). • Un programa puede interrumpirse bruscamente, por ejemplo si tenemos que hacer una división y el divisor es cero, etc. Los errores que se pueden producir en la fase de compilación son: − Errores fatales: Son raros. Indican errores internos del compilador. Cuando ocurren la compilación se detiene inmediatamente. − Errores de sintaxis: Son los errores típicos de sintaxis. No detienen la compilación sino que al finalizar ésta se mostrará la lista con todos los errores encontrados. Algunos errores suelen ser consecuencia de otros cometidos con anterioridad. Con este tipo de errores no se puede obtener un programa objeto y por lo tanto tampoco el ejecutable. − Advertencias o avisos (warnings): Indican que hay líneas de código sospechosas que a pesar de no infringir ninguna regla sintáctica, el compilador las encuentra susceptibles de provocar un error. Cuando se detecta un warning la compilación no se detiene. Si en un programa fuente sólo se detectan warnings sí que se podrá obtener un programa objeto, que tras el linkado dará lugar a un programa ejecutable. Página 3 de 5
  • 4. Ingeniería Técnica Industrial Fundamentos de Informática Tema 3. El proceso de compilación, del código fuente al código máquina Con respecto a los errores en tiempo de ejecución, encontrar la causa que los provoca es una labor en ocasiones complicada, razón por la cual los EID (Entornos Integrados de Desarrollo, p.ej. DevC++) nos proporcionan una herramienta llamada Depurador que nos ayuda a encontrar los errores lógicos y demás errores producidos en tiempo de ejecución. Un depurador (debugger), es un programa diseñado específicamente para la detección, verificación y corrección de errores. Los depuradores nos permiten trazar el programa (ejecutarlo sentencia a sentencia) y visualizar el contenido de las variables y direcciones de memoria durante la ejecución del programa. Además permiten alterar el flujo de ejecución del mismo, cambiar los valores de las variables e introducir puntos de parada. Pasos para la elaboración y ejecución de un programa: Los pasos a seguir los podemos resumir de la siguiente manera: 1 º. Escribir el código fuente, por ejemplo con el editor del EID. 2 º. Compilar el fichero fuente 3 º. Si se producen errores de sintaxis (o warnings) volver al editor y eliminar los errores de sintaxis. 4 º. Si no hay errores se obtendrá el código objeto y el enlazador construirá el archivo ejecutable. 5 º. Una vez tengamos el archivo ejecutable, será el sistema operativo el encargado de colocar el programa en la memoria central y ejecutarlo. 6 º. Comprobar el funcionamiento del programa. 7 º. Si se detecta errores o un mal funcionamiento del programa, activar el depurador para trazar el programa y ejecutarlo sentencia a sentencia. 8 º. Una vez que hayamos encontrado la causa del error, volveremos al editor y lo corregimos. 9 º. El proceso de compilar, enlazar y ejecutar el programa lo repetiremos hasta que no se produzcan errores. Página 4 de 5
  • 5. Ingeniería Técnica Industrial Fundamentos de Informática Tema 3. El proceso de compilación, del código fuente al código máquina 3.2 Fase de ejecución de un programa Una vez que tenemos el programa en lenguaje máquina, para poderlo ejecutar hay que introducirlo en la memoria. 1. Una utilidad del S.O. llamada cargador colocará el programa, y sus datos de entrada, en memoria principal, preparándolo para su ejecución. 2. El S.O. le pasa el control a la C.P.U. para que comience la ejecución del programa, realizando la Unidad de Control los siguientes pasos (fases): Captación de la instrucción: Lee de la Memoria Principal la instrucción a ejecutar. Ejecución de la instrucción: Interpreta la instrucción leída y envía señales de control a las unidades que deban intervenir en su ejecución. Tras dicha ejecución se establece cuál será la siguiente instrucción a ejecutar. 3.3 El compilador de C. Características generales. ♦ El lenguaje C es un lenguaje muy potente y eficiente de nivel medio: combina elementos de lenguajes de alto nivel con la funcionalidad del lenguaje ensamblador. Es adecuado para la programación de sistemas. ♦ Es un lenguaje de propósito general (puede utilizarse para desarrollar sistemas operativos, gestores de bases de datos, etc). ♦ El código de C es muy portable: se puede adaptar el software escrito para un tipo de computadora a otra computadora sin hacer muchos cambios. ♦ El lenguaje C es un lenguaje estructurado: permite seccionar y esconder (mediante subrutinas y variables locales) del resto del programa toda la información e instrucciones necesarias para realizar una determinada tarea. ♦ El lenguaje C sólo tiene 32 palabras clave, (BASIC por ejemplo tiene 159). ♦ Suele incluir potentes librerías de funciones que aumentan su potencia. ♦ El lenguaje C es compilado, no interpretado. Un intérprete lee el código fuente de un programa línea a línea y las traduce online para que la CPU las pueda interpretar, pero no genera ningún programa objeto. Un compilador lee el programa entero, lo traduce y genera un código objeto directamente ejecutable y entendible por el microprocesador. Página 5 de 5