Estructura de Un Compilador
-
Upload
keromy-lee -
Category
Documents
-
view
17 -
download
0
Transcript of Estructura de Un Compilador
Estructura de un Compilador
Preprocesador
Compilación
Ensamblado Enlazado
Código Fuente
Código Fuente Expandido
Código Ensamblador
Código Binario no enlazado
Código Binario Ejecutable
Estructura de un Compilador
Ing. Karla Ivet García Salado
Preprocesadores
Encargado de transformar el código fuente de entrada original en el
código fuente puro.
Expandir la macros, incluir librerías, realizar un preprocesado racional,
extender el lenguaje y todo aquello que el código de entrada sea
representativo de una abreviatura para facilitar la escritura del mismo.
Compilación
Recibe el código fuente puro, este es el modulo principal del
compilador, pues si ocurriera algún error en eta etapa, el compilador no
podría avanzar.
Se somete al código fuente puro de entrada a un análisis léxico grafico,
sintáctico ,semántico, que construye la tabla de símbolos y
genera un código intermedio al cual se optimiza para así poder producir
un código de salida .
Ing. Karla Ivet García Salado
Ensamblado
Recibe un código fuente de entrada escrito en
ensamblador, y produce otro código de salida llamado
código binario no enlazado.
A diferencia de otros compiladores no realiza una expansión del código fuente
original tiene solo un proceso de compilador y por supuesto no enlaza el código fuente.v
Es un compilador que carece de los módulos de preprocesadores y enlazado, y donde los módulos de compilación y ensamblado son los
mismos.
Ing. Karla Ivet García Salado
EnlazadoEs el encargado de realizar en enlazado del código de fuente de entrada con las librerías que necesita,
así como también de proveer al código de las rutinas necesarias para poder ejecutarse, y
cargarse en la ejercitación, modifica las direcciones relocalizables y ubica los datos en las posiciones
apropiadas de la memoria. Es el que produce como salida el
código binario enlazado.
*Dinámico *Estático
Ing. Karla Ivet García Salado
Se refiere a que el código producido utiliza librerías dinámicas.
Gracias a esto se obtendrá un código mas corto y que se actualizara automáticamente si aparece alguna nueva versión de librerías.
Dinámico Se refiere al echo que no se realiza enlace con ninguna librería y por lo tanto se obtendrá un código mas largo con una copia de las rutinas de librería que necesita.
Estático
Ing. Karla Ivet García Salado
Ing. Karla Ivet García Salado
Fase de Análisis
Fase de Síntesis
Ing. Karla Ivet García Salado
Proceso de Compilacion
•Análisis Léxico•Análisis sintáctico •Análisis semántico
•Etapa de generalización de código intermedio• etapa de optimización de código • etapa de generalización de código
Análisis Léxico (scanner)
• Se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes léxicos.
• Cada componente léxico es una secuencia lógicamente coherente de caracteres relativas a un identificador, un operador o un carácter de puntuación.
• En el caso de los identificadores creados por el programador no solo se genera u componente léxico, si no que también se genera otro lexema en la tabla de símbolos.
Análisis Sintáctico
• En esta fase, los componentes léxicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida.
Análisis Semántico
• En esta fase se intenta detectar instrucciones que tengan la estructura sintáctica correcta, pero que no tengan significado para la operación implicada. Ing. Karla Ivet García Salado
FASE DE ANALISIS
LEXEMA
Generación de Código Intermedio
• Generan una representación intermedia explicita del programa fuente, una vez que se haya realizado la fase de análisis.
• Esta operación intermedia se conoce como subprograma para una maquina abstracta.
• Debe ser fácil de producir y fácil de traducir al programa objeto
Optimización de Código
• En esta fase se trata de mejorar el código intermedio, de modo que resulte un codigo de maquina mas rápido de ejecutar.
Generación de Codigo
• Fase final del compilador.• Se genera el codigo objeto
que por lo general consiste en codigo en lenguaje maquina o codigo en lenguaje ensamblador.
Ing. Karla Ivet García Salado
• Existen dos formas las para la fase de síntesis las cuales son las siguientes:
Ing. Karla Ivet García Salado
Una tabla de símbolos es una estructura de datos que contiene un registro por cada identificador.
El administrador de la tabla de símbolos se encarga de manejar los accesos a la tabla de símbolos, en cada una de las etapas de compilación de un problema.
Administrador de Tabla de símbolos
Es conveniente que el tratamiento de errores se haga de manera centralizada a través de un manejador de errores.
De esta forma podrán controlarse más eficientemente los errores encontrados en cada una de las fases de la compilación de un programa.
Manejador de Errores