domingo, 23 de febrero de 2014

Resumen 2

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.

No hay comentarios:

Publicar un comentario