Estructura de Un Compilador

10
Estructura de un Compilador Preprocesa dor Compilació n Ensamblado Enlazado Código Fuente Código Fuente Expandido Código Ensamblador Código Binario no enlazado Código Binario Ejecutabl e Estructura de un Compilador Ing. Karla Ivet García Salado

Transcript of Estructura de Un Compilador

Page 1: 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

Page 2: Estructura de Un Compilador

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

Page 3: Estructura de Un Compilador

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

Page 4: Estructura de Un Compilador

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

Page 5: Estructura de Un Compilador

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

Page 6: Estructura de Un Compilador

Ing. Karla Ivet García Salado

Page 7: Estructura de Un Compilador

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

Page 8: Estructura de Un Compilador

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

Page 9: Estructura de Un Compilador

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

Page 10: Estructura de Un Compilador

• 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