Fases de los Compiladores
Fases de un Compilador:
Análisis Léxico
Análisis Sintáctico
Análisis Semántico
Generación de Código Intermedio
Optimización de Código
Generación de Código Final
Generación de Código Intermedio:
-Se genera la primera versión del lenguaje objeto al cual se desea transforma el
lenguaje fuente.
-Normalmente esta primera versión puede ser mejorada
-Normalmente cuando se transforma un ensamblador es en este punto donde se
utilizan algoritmos como:
|Código de tres dimensiones.
|Creación/Sustitución de variables por temporales más simples .
|Construcción de Grafos Dirigidos cíclicos para optimizar la primera versión.
Optimización de Código Intermedio:
-Reducir operaciones.
-Reducir código.
-Eliminar código que no se ocupa.
-Cambiar el orden del código para mejorar el rendimiento.
-Disminuir el uso de variables.
-Utilización de la memoria.
-Reutilización de segmentos de código.
-Detector de errores de ejecución.
Generación de Código Final:
-Genera la Salida
|Cuando es un compilador{>Archivo ejecutable.
|Cuando es un interprete{>Instrucción ejecutable.
-Características de la salida.
|Formato del archivo.
|Encoding: Utf-8, Utf-16.
Tabla de Símbolos: Variables y Constantes:
Nombre.
Tipo.
Alcance.
Valor.
Nombre Temporal Asociado
Utilización: Se usa?
Esta inicializado?
Manejo de Errores:
La construcción de un manejador de errores permite al desarrollador obtener:
m ás información, localización, opciones de correpción, avanzar en el proceso de
búsqueda de más errores, correpción automática de errores.
Pasadas:
| Solo una pasada:
Lee el programa fuente solo una vez.
Tiende a ser más optimo
.
| Múltiples pasadas:
Requiere de varias lecturas para realizar la compilación / interpretación.
Normalmente usado por interpretes y menos usado por compiladores por su
costo.
Diferencias de un Compilador y un Interprete:
|
|
Compilador:
-Tiene una salida un único lenguaje objeto.
-El rendimiento en la ejecución del programa compilado(la salida) es más
rápido que el interpretado.
-La salida puede depender de la arquitectura.
-Los errores sintácticos y semánticos se detectan antes de la ejecución del
programa objeto.
-No requiere del programa fuente porque el programa objeto es ejecutable (se
puede mantener en secreto el programa fuente).
-Menor flexibilidad en el uso de la memoria para el programa objeto.
|
Interprete:
-Tiene como salida instrucciones traducidas.
-El rendimiento del interprete se somete al rendimiento de realizar la
traducción.
Tiende a ser más portable e independiente de la arquitectura.
Se detectan los errores durante la ejecución del programa.
-Se requiere del programa fuente para la ejecución.
-Es más flexible para que el programa pueda usar la memoria.
Taxonomía de los compiladores:
|
|Cruzadas
|Optimizadores
|Una sola pasada
|Varias pasadas
|JIT(Just in time): Híbrido Compilar/Interpretar
|Ensambladores|- Utilización de nmónicos.
domingo, 23 de febrero de 2014
domingo, 16 de febrero de 2014
Resumen 1
1. Introducción a compiladores
Compilador: se define como un programa que se encarga de traducir un lenguaje fuente o lenguaje objeto.
Lenguaje Fuente: es aquel lenguaje que es comprensible para un intérprete humano y es empleado para escribir programas de computadora.
Lenguaje objeto: consiste en el lenguaje de salida del compilador.
Un compilador se caracteriza por tres lenguajes: un lenguaje fuente F, el lenguaje en el cual está escrito el compilador I y el lenguaje objeto O. Los tres se representan utilizando un diagrama llamado diagrama T como el que se muestra a continuación.
Ejemplo:
Ejemplo más complicado:
La función principal que cumple es traducir a un lenguaje mucho mas sencillo y entendible por la maquina, informa al usuario si existen errores en el código fuente con el fin de ejecutar la aplicación sin problema, si existe algún error simplemente se detiene.
Compilador: se define como un programa que se encarga de traducir un lenguaje fuente o lenguaje objeto.
Lenguaje Fuente: es aquel lenguaje que es comprensible para un intérprete humano y es empleado para escribir programas de computadora.
Lenguaje objeto: consiste en el lenguaje de salida del compilador.
Un compilador se caracteriza por tres lenguajes: un lenguaje fuente F, el lenguaje en el cual está escrito el compilador I y el lenguaje objeto O. Los tres se representan utilizando un diagrama llamado diagrama T como el que se muestra a continuación.
Ejemplo:
Figura 1.
Ejemplo más complicado:
Figura 2.
Suscribirse a:
Entradas (Atom)


.jpg)