¿Como funciona un compilador?

En este post explicaremos que funciona un compilador, para ello debemos tener en cuenta que un compilador tiene como tarea principal transformar el código fuente en código que la maquina pueda entender.

Analizador Léxico. Lee el programa fuente y agrupa los caracteres generando “tokens” (pares nombre-valor) que introduce en la tabla de símbolos.

Analizador sintáctico (“parsing”). Crea un árbol que describe la estructura gramatical del flujo de tokens.

Analizador semántico. Usa el árbol sintáctico y la tabla de símbolos para comprobar la consistencia semántica del código fuente con la definición del lenguaje. También recopila información sobre tipos y la guarda, en el árbol sintáctico o en la tabla de símbolos, para usarla mas tarde.

Generador de código intermediario. El compilador puede construir una o mas representaciones intermedias, que pueden tener distintas formas.

Optimizador de código. Opcionalmente, se pueden realizar optimización es que buscan mejorar el código intermedio para producir un mejor código destino.

Generador de código destino. Recibe como entrada una representación intermedia del programa fuente y la asigna al lenguaje destino.

compilador

Para resumir, un compilador funciona de la siguiente forma:

  • El código fuente se lee en la memoria de la computadora.
  • El código fuente se convierte en código objeto o módulo de objeto. Un programa puede tener muchos objetos y bibliotecas que necesitan ser unidas entre sí para crear el ejecutable.
  • Se crean los conectores, para enlazar todos los componentes del programa.
  • Se reasignan los bloques de memoria dentro del programa de modo que una pieza no sobreponga a otra parte en la memoria.
  • Los archivos compilados se graban en el disco u otro tipo de memoria permanente.
  • El resultado es un archivo o programa ejecutable.

Referencia: https://es.wikipedia.org/wiki/Compilador

Share on FacebookTweet about this on TwitterShare on Google+

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *