Saltar al contenido

Compilación de un programa y obtención de código ejecutable.

Cuando desarrollamos software en cualquier lenguaje de programación, debe pasar por un proceso de compilación. antes de poder ejecutarse.

Anteriormente, dijimos que la compilación consiste en pasar el código escrito por nosotros, (código fuente) a código maquina. En otras palabras, debemos traducir el código en el lenguaje de programación escogido al lenguaje que solo entiende la máquina. Sin embargo, este proceso no es automático. Para poder realizar el proceso de compilación correctamente, se utilizan dos programas; un compilador y un enlazador.

Índice de contenidos

    Tipos de código.

    Antes de que un programa se ejecute, en el proceso de compilación el código pasa por diferentes estados.

    • Código fuente. Es el código que escribe el programador en un lenguaje de programación determinado.
    • Código objeto. Es el código resultante de la compilación del código fuente. Es un código que no entendemos ni nosotros ni el ordenador.
    • Código ejecutable. Es el código que se obtiene una vez que se une el código objeto con las librerías necesarias a través de un enlazador para poder ejecutar el programa.

    Por otro lado, el proceso de compilación debe pasar por diferentes fases.

    Compilación de un programa.

    Aunque el proceso de obtener nuestro código ejecutable pase tanto por un compilador como por un enlazador, al proceso completo se le suele llamar compilación.
    Todo este proceso se lleva a cabo mediante dos programas: el compilador y el enlazador. Mientras que el enlazador solamente une el código objeto con las librerías, el trabajo del compilador es mucho más completo.

    Proceso de compilación de un programa.

    Fases del proceso de compilación de un programa.

    Análisis léxico – gráfico.

    En esta fase se leen todos los caracteres de nuestro código fuente de manera secuencial en unidades de caracteres llamadas tokens.

    Análisis sintáctico – semántico.

    Recibe el código de la fase anterior para determinar la estructura del programa y comprueba si se cumplen las reglas sintácticas. Además se revisa la coherencia de las frases gramaticales. Si su significado es correcto, si los tipos de datos son correctos. si los arrays tienen el tamaño y tipo adecuados, etc.

    Generación de código intermedio.

    Después de analizarlo todo, se crea una representación similar al código fuente para facilitar la tarea de traducirlo al código objeto.

    Optimización de código.

    Se revisa el código generado anteriormente optimizándolo para que sea más fácil y rápido a la hora de interpretarlo la máquina.

    Generación de código.

    Se genera el código objeto de nuestro programa en un código de lenguaje máquina.

    Enlazador de librerías. Fase final de la compilación

    Se enlaza el código objeto con las librerías necesarias produciendo finalmente el código ejecutable.

    Aunque hemos visto como un software pasa de un código fuente a un código máquina, anteriormente también hablamos de código objeto y código ejecutable. Vamos a ver con más detalle estos tres tipos de código.