Compilador
Estructura del proceso de
compilacion
Fase Sintesis
Optimizacion de codigo
En esta fase se trata de mejorar el código
intermedio, de modo que resulte un código
de máquina más rápido de ejecutar.
Generacion de codigo
Esta constituye la fase final de un
compilador. En ella se genera el código
objeto que por lo general consiste en
código en lenguaje máquina (código
relocalizable) o código en lenguaje
ensamblador.
Generacion de codigo intermedio
En esta etapa se lleva el código del
programa fuente a un código interno para
poder trabajar mas fácilmente sobre él.
Fase Analisis
Semántico
El analizador semántico detecta la validez
semántica de las sentencias aceptadas por
el analizador sintáctico.
Sintactico
Se encarga de revisar que los tokens estén
ubicados y agrupados de acuerdo a la
definición del lenguaje.
Lexico
Su función es tomar el programa fuente en
forma de tokens, que recibe del analizador
léxico y determinar la estructura de las
sentencias del programa.
Estructura de un compilador
Enlazado
Este ultimo modulo es el que produce
como salida el código binario enlazado.
Ensamblado
Este modulo recibe un código fuente de
entrada escrito en ensamblador, y produce
otro código de salida, llamado código
binario no enlazado.
Compilacion
En esta etapa se somete al código fuente
puro de entrada a un análisis léxico gráfico,
a un análisis sintáctico, a un análisis
semántico, que construyen la tabla de
símbolos, se genera un código intermedio
al cual se optimiza para así poder producir
un código de salida generalmente en algún
lenguaje ensamblador
Preprocesador
Es el encargado de transformar el código
fuente de entrada original en el código
fuente puro.
Tipos de compiladores
Descompilador
Es un programa que acepta como entrada
código maquina y la traduce a un lenguaje
de alto nivel realizando el proceso inverso
a la compilación.
Meta compilador
Es programa que recibe como entrada las
especificaciones del lenguaje para el que
se desea obtener un compilador y genera
como salida el compilador para ese
lenguaje.
Auto compilador
Compilador que está escrito en el mismo
lenguaje que va a compilar.
Compilador con montador
Compila distintos módulos de forma
independiente y después es capaz de
aplazarlos.
Compiladores incrementales
Generan un código objeto, instrucción por
instrucción cuando el usuario teclea cada
orden individual.
Compiladores JIT (Just In Time)
forman parte de un intérprete y compilan
partes del código según se necesitan.
Compiladores de varias pasadas
necesitan leer el código fuente varias veces
antes de poder producir el código máquina.
Compiladores de una sola pasada
generan el código máquina a partir de una
única lectura del código fuente.
Compiladores optimizadores
realizan cambios en el código para mejorar
su eficiencia, pero manteniendo la
funcionalidad del programa original.
Compiladores cruzados
generan código para un sistema distinto del
que están funcionando.
Partes de un compilador
El BackEnd
Esta parte del compilador es la encargada
de generar el código en formato de
máquina, a partir del trabajo hecho por el
Front End.
El FrontEnd
Es la parte del compilador que interactúa
con el usuario. Se encarga de realizar el
análisis del código fuente a compilar y
verifica que este sea válido, así como
también, genera el árbol de derivación y
rellena los valores de la tabla de
símbolos.
¿Qué es?
Un compilador es un programa que
convierte o traduce el código fuente de un
programa hecho en lenguaje de alto nivel,
a un lenguaje de bajo nivel.