3. UN COMPILADOR ES UN PROGRAMA INFORMÁTICO QUE TRADUCE UN PROGRAMA QUE HA SIDO
ESCRITO EN UN LENGUAJE DE PROGRAMACIÓN A UN LENGUAJE COMÚN, REÚNE DIVERSOS
ELEMENTOS O FRAGMENTOS EN UNA MISMA UNIDAD. USUALMENTE LENGUAJE DE MÁQUINA,
AUNQUE TAMBIÉN PUEDE SER TRADUCIDO A UN CÓDIGO INTERMEDIO (BYTECODE) O A TEXTO.
ESTE PROCESO DE TRADUCCIÓN SE CONOCE COMO COMPILACIÓN, COMPILAR CONSISTE EN
TRADUCIR UN PROGRAMA ESCRITO EN UN CIERTO LENGUAJE A OTRO.
QUE ES UN COMPILADOR
TIPOS DE COMPILADOR
1. COMPILADOR DE UNA SOLA PASADA
2. COMPILDOR DE MULTIPLES PASADAS
3. METACOMPILADOR
4. DESCOMPILADOR
5. COMPILADOR INTERPRETE
6. COMPILADOR CRUZADO
4.
5. COMPILADOR DE UNA SOLA PASADA
VENTAJAS
1. ES FACIL DE IMPLEMENTAR
2. GENERA POCA ACTIVIDAD DE ENTRADA
Y SALIDA
3. EL CODIGO DE UN PROCEDIMIENTO SE
COMPILA EN MEMORIA Y ESCRIBE
COMO UNA UNIDAD A LA MEMORIA
SECUNDARIA
DESVENTAJAS
1. LIMITACIONES EN LA CALIDAD DEL CODIGO
2. MUCHA NECESIDAD DE MEMORIA
Examinan solo una vez el código fuente para generar el código
objeto.
6. COMPILADOR DE MULTIPLES
PASADAS1. REQUIERE DE PASOS INTERMEDIOS (CÓDIGO INTERMEDIO) ANTES DE GENERAR EL CÓDIGO
OBJETO FINAL.
2. ENTRE MENOS PASADAS MENOR TIEMPO DE COMPILACIÓN, SIN EMBARGO MÁS PASADAS
PUEDEN GENERAR CÓDIGO OBJETO MÁS EFICIENTE.
3. LA TABLA DE SÍMBOLOS SE CREA DURANTE EL ANÁLISIS LEXICO Y SINTACTICO
4. EL ANALIZADOR LÉXICO SEPARA EL PROGRAMA EN TOKEN, QUE COMPARA LAS PALABRAS
RESERVADAS, Y SI EL TOKEN NO ES UNA PALABRA RESERVADA SE ASUME QUE ES UN
IDENTIFICADOR Y DURANTE EL ANÁLISIS SINTÁCTICO SE AÑADE A LA TABLA
VENTAJAS
1. GENERA UN CODIGO MAS EFICIENTE
DESVENTAJAS
1. UTILIZA MAS TIEMPO EN COMPILAR
2. UTILIZA MAS RECURSOS – PASOS INTERMEDIOS
7. METACOMPILADOR
METACOMPILADOR. EL METACOMPILADOR ES SINÓNIMO DE COMPILADOR DE COMPILADORES Y
SE REFIERE A UN 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.
POR LO REGULAR HAY DOS TIPOS DE METACOMPILADORES, LOS QUE TRABAJAN CON EXPRESIONES
REGULARES Y AQUELLOS QUE LO HACEN CON GRAMÁTICAS LIBRES DE CONTEXTO.
EJEMPLOS CLÁSICOS SON LEX (GENERADOR DE ANALIZADORES LÉXICOS) Y YACC (GENERADOR DE
ANALIZADORES SINTÁCTICOS).
8. DESCOMPILAD
ORREALIZA UNA TAREA DE TRADUCCIÓN INVERSA, ES DECIR, VA DEL CÓDIGO MÁQUINA AL
LENGUAJE DE ALTO NIVEL.
ES RELATIVAMENTE SENCILLO CUANDO SE TRATA DE IR A CÓDIGO ENSAMBLADOR O
MACRO ENSAMBLADOR, PERO NO CUANDO SE QUIERE LLEGAR A UN LENGUAJE DE ALTO
NIVEL.
1. DCC Decompiler
2. Boomerang Decompiler Project
3. Reverse Engineering Compiler (REC)
4. ExeToC
5. code-dump
TIPOS DE DESCOMPILADOR
9. COMPILADORES
INTERPRETES1. REALIZAN DOS FASES: LA FASE DE COMPILACIÓN Y LA FASE DE
INTERPRETACIÓN.
2. LA FASE DE COMPILACIÓN TRADUCE LA ENTRADA EN UNA
REPRESENTACIÓN INTERMEDIA POR UNA ÚNICA VEZ.
3. LA FASE DE INTERPRETACIÓN PARTE DE LA REPRESENTACIÓN
GENERADA POR LA PRIMERA FASE PARA LA EJECUCIÓN DEL
PROGRAMA.
UN INTÉRPRETE TRADUCE INSTRUCCIONES DE ALTO NIVEL EN
UNA FORMA INTERMEDIA PARA SER EJECUTADO. EN
CONTRASTE, UN COMPILADOR, TRADUCE INSTRUCCIONES DE
ALTO NIVEL DIRECTAMENTE EN LENGUAJE DE MÁQUINA. EL
INTÉRPRETE TRADUCE UN PROGRAMA LÍNEA A LÍNEA MIENTRAS
QUE EL COMPILADOR TRADUCE EL PROGRAMA ENTERO Y
LUEGO LO EJECUTA.
10. VENTAJAS DEL COMPILADOR
1. SOLO SE COMPILA 1 VEZ
2. LA EJECUCION ES MAS RAPIDA
3. OPTIMIZACION DE CODIGO E
INFORMACION DE ERROR MAS
VENTAJAS DEL INTERPRETE
1. MENOR COSTE ESPACIAL
2. MAYOR INTERACTIVIDAD EN DESARROLLO
3. AÑADIR CODIGO EN “CLIENTE”.
11. COMPILADORES
CRUZADOSSURGEN COMO SOLUCIÓN AL PROBLEMA
DE DESARROLLAR UN PRIMER
COMPILADOR PARA UNA NUEVA
ARQUITECTURA.
DADO QUE EL DESARROLLO DE
COMPILADORES ES UNA TAREA
COMPLEJA, RESULTA MÁS FÁCIL
CONSTRUIRLOS SOBRE UNA MÁQUINA
QUE YA DISPONGA DE HERRAMIENTAS
DE SOFTWARE.
SE DENOMINA COMPILADOR CRUZADO A
UN COMPILADOR QUE SE EJECUTA EN
UNA MÁQUINA PERO EL CÓDIGO OBJETO
ES PARA OTRA MÁQUINA.