Anda di halaman 1dari 11

Conceptos Básicos Relacionados con la

Traducción

Presentado por:

Juan Pablo Tabares Victoria


Héctor Fabio Pineda Páez

Tutor
Heri Fernando Londoño Salgado
Compiladores
Compilador
 Es aquel traductor que tiene como entrada una sentencia en lenguaje formal y como
salida tiene un fichero ejecutable, es decir, realiza una traducción de un código de
alto nivel a código máquina (también se entiende por compilador aquel programa que
proporciona un fichero objeto en lugar del ejecutable final).
Compilación, enlace y carga

 Estas son las tres fases básicas que hay que seguir para que un ordenador
ejecute la interpretación de un texto escrito mediante la utilización de un
lenguaje de alto nivel.
 Consiste en lenguaje máquina o bytecode y se distribuye en varios archivos
que corresponden a cada código fuente compilado. Para obtener un programa
ejecutable se han de enlazar todos los archivos de código objeto con un
programa llamado enlazador.
Enlace

 Es un programa que toma los objetos


generados en los primeros pasos del proceso
de compilación, la información de todos los
recursos necesarios (bibliotecas), quita
aquellos recursos que no necesita, y va
seleccionando lo necesario para así enlazar
todos los objetos y librerías para generar el
fichero ejecutable

Enlazador o
linker
Carga

 El cargador carga el fichero .exe, coloca


sus diferentes segmentos en memoria
(donde el sistema operativo le diga que
hay memoria libre para ello) y asigna los
registros base a sus posiciones correctas,
de manera que las direcciones relativas
funcionen correctamente.

Labor realizada por el cargador. El cargador suele ser parte del sistema operativo
Pasadas de Compilación

 Es el numero de veces que el compilador debe leer el programa fuente para generar el
código.
 Otros lenguajes dan por implícito el FORWARD, y si aun no se han encontrado aquello a
que se hace referencia, continúan, esperando que el linker resuelva el problema, o
emita el mensaje de error.
Compilación Incremental

 Sólo se recompilan las modificaciones realizadas desde la última compilación. Lo ideal es


que sólo se recompilen aquellas partes que contenían los errores o que, en general,
hayan sido modificadas, y que el código generado se reinserte con cuidado en el fichero
objeto generado en la última compilación, Sin embargo esto es muy difícil de conseguir
y no suele ahorrar tiempo de compilación más que en casos muy concretos.

Grados de Afinación
 A nivel de sentencia
 A nivel de bloque
 A nivel de fichero fuente
Autocompilador

 Es un compilador escrito en el mismo lenguaje que compila (o parecido). Normalmente,


cuando se extiende entre muchas máquinas diferentes el uso de un compilador, y éste se
desea mejorar, el nuevo compilador se escribe utilizando el lenguaje del antiguo, de
manera que pueda ser compilado por todas esas máquinas diferentes, y dé como
resultado un compilador más potente de ese mismo lenguaje
Metacompilador
 es un compilador de compiladores, se trata de un programa que acepta como entrada la
descripción de un lenguaje y produce el compilador de dicho lenguaje.
 Ejemplos de metacompiladores son: Lex, YACC, FLex, Bison, JavaCC, JLex, Cup, PCCTS,
MEDISE, etc.
 Caracteristicas:
Descripcion de los elementos del lenguaje, tales como identificadores, operadores,
símbolos especiales y estructuras especificas.
Los parsers generados son capaces de localizar exactamente la ubicación de los errores.
Pueden trabajar con gramáticas de contexto.
Descompilador
 Realiza una tarea de traducción inversa, es decir, va del código maquina al lenguaje de
alto nivel, es realmente sencillo cuando se trata de ir al código ensamblador y macro
ensamblador.