Está en la página 1de 22

PROCESOS INTERNOS DE LOS COMPILADORES Y

TRADUCTORES PARA EJECUTAR UN CÓDIGO DE


INSTRUCCIONES 
INTERPRETES
• Un intérprete es un programa informático que procesa el código fuente de un proyecto de software
durante su tiempo de ejecución, es decir, mientras el software se está ejecutando, y actúa como
una interfaz entre ese proyecto y el procesador. Un intérprete siempre procesa el código línea por
línea, de modo que lee, analiza y prepara cada secuencia de forma consecutiva para el procesador.
INTERPRETE DE COMANDOS
• Un intérprete de línea de comandos, o CLI, es un programa que los usuarios de computadoras
utilizan para ejecutar comandos de texto.

¿Cómo funciona el intérprete de línea de comandos?

Los usuarios ingresan los comandos a través del teclado.


Luego, el intérprete de la línea de comandos convierte los
comandos en funciones o llamadas al sistema. El SO
recibe y ejecuta las respectivas llamadas.
Que es un compilador
Un compilador es un tipo de traductor que transforma un programa entero de un
lenguaje de programación (llamado código fuente) a otro.  Usualmente el lenguaje
objetivo es código máquina, aunque también puede ser traducido a un código
intermedio (bytecode) o a texto.
PARTES DE
UN
COMPILADOR
La construcción de un
compilador involucra
la división del proceso en una
serie de fases que variará con
su complejidad. Generalmente
estas fases se agrupan en dos
tareas: el análisis del programa
fuente la síntesis del y
programa objeto.
Análisis
• Se trata de la comprobación de la corrección del programa fuente, e
incluye las fases correspondientes al Análisis léxico (que consiste en la
descomposición del programa fuente en componentes léxicos),
Análisis sintáctico (agrupación de los componentes léxicos en
frases gramaticales) y Análisis semántico (comprobación de la validez
semántica de las sentencias aceptadas en la fase de Análisis
Sintáctico).
Síntesis
• Su objetivo es la generación de la salida expresada en el
lenguaje objeto y suele estar formado por una o varias combinaciones
de fases de Generación de Código (normalmente se trata de código
intermedio o de código objeto) y de Optimización de Código (en las
que se busca obtener un código lo más eficiente posible).
Front-end y Back-end: 
• Front-end: es la parte que analiza el código fuente, comprueba su
validez, genera el árbol de derivación y rellena los valores de la tabla
de símbolos. Esta parte suele ser independiente de la plataforma
o sistema para el cual se vaya a compilar, y está compuesta por las
fases comprendidas entre el Análisis Léxico y la Generación de Código
Intermedio.

•  Back-end: es la parte que genera el código máquina, específico de


una plataforma, a partir de los resultados de la fase de análisis,
realizada por el Front End.
Tipos de Compiladores
• Compiladores cruzados
• Compiladores optimizadores
• Compiladores de una sola pasada
• Compiladores de varias pasadas
• Compiladores JIT (just in time)
Proceso de
compilación
ENSAMBLADORES Y
MACROENSAMBLADORES

• Ensambladores: Son aquellos que


permanecen en la memoria principal
de la computadora y cargan, para
su ejecución, al programa objeto
producido.
• Macroensambladores: Son
ensambladores que permiten el uso
de macroinstrucciones.
CONSTRUCCION SISTEMATICA DE
COMPILADORES
Con frecuencia, las fases anteriores se agrupan
en una etapa inicial (frontend) y una etapa final
(back- end). La etapa inicial comprende aquellas
fases, o partes de fases, que dependen
exclusivamente del lenguaje fuente y que son
independientes de la máquina para la cual se va
a generar el código. En la etapa inicial se
integran los análisis léxicos y sintácticos, el
análisis semántico y la generación de código
intermedio. La etapa inicial también puede
hacer cierta optimización de código e incluye
además, el manejo de errores correspondiente
a cada una de esas fases.
TABLA DE SIMBOLOS
•Las operaciones básicas que debe poseer son:
•• crear(): crea una tabla vacía.
•• insertar(simbolo): añade a la tabla el símbolo
dado.
•• buscar(nombre): devuelve el símbolo cuyo
nombre coincide con el
•parámetro. Si el símbolo no existe devuelve null.
•• imprimir(): a efectos informativos, visualiza por
la salida estándar la lista de variables almacenadas
en la tabla de símbolos junto con sus valores
asociados.
Análisis léxico
Análisis sintáctico
FASES DE
UN Análisis semántico
COMPILA Generación de código intermedio
DOR
Optimización del código
Generación de código
• El análisis léxico constituye la primera
fase, aquí se lee el programa fuente de
izquierda a derecha y se agrupa en
componentes léxicos (tokenes), que son
secuencias de caracteres que tienen un
Análisis significado. Además, todos los espacios
en blanco, líneas en blanco, comentarios
léxico y demás información innecesaria se
elimina del programa fuente. También se
comprueba que los símbolos del
lenguaje (palabras claves, operadores
etc.) se han escrito correctamente.
• En esta fase los caracteres o
componentes léxicos se agrupan
jerárquicamente en frases gramaticales
que el compilador utiliza para sintetizar la
Análisis salida. Se comprueba si lo obtenido de la
fase anterior es sintácticamente correcto
sintáctico (obedece a la gramática del lenguaje).
Por lo general, las frases gramaticales
del programa fuente se representan
mediante un árbol de análisis sintáctico.
• La fase de análisis semántico revisa el
programa fuente para tratar de encontrar
errores semánticos y reúne la
información sobre los tipos para la fase
posterior de generación de código. En
Análisis semántic ella se utiliza la estructura jerárquica
o determinada por la fase de análisis
sintáctico para identificar los operadores
y operandos de expresiones y
proposiciones.
• Después de los análisis sintáctico y
semántico, algunos compiladores
generan una representación intermedia
explícita del programa fuente. Se puede
considerar esta representación
Generación de códig intermedia como un programa para una
o intermedio maquina abstracta. Esta representación
intermedia debe tener dos propiedades
importantes; debe ser fácil de producir y
fácil de traducir al programa objeto.
• La fase de optimización de código
consiste en mejorar el código intermedio,
de modo que resulte un código máquina
Optimación de códi más rápido de ejecutar. Esta fase de la
go etapa de síntesis es posible sobre todo si
el traductor es un compilador
(difícilmente un intéprete puede optimizar
el código objeto).
• La fase final de un compilador es la
generación de código objeto, que por lo
general consiste en código máquina
reubicable o código ensamblador. Cada una
Generación de códig de las variables usadas por el programa se
o traduce a una dirección de memoria (esto
también se ha podido hacer en la fase de
generación de código intermedio).
Gestión de memoria en
tiempos de ejecución
• Cuando un programa se ejecuta sobre un
sistema operativo existe un proceso previo
llamado cargador que suministra al programa
un bloque contiguo de memoria sobre el cual
ha de ejecutarse. El programa resultante de la
compilación debe organizarse de forma que
haga uso de este bloque. Para ello el
compilador incorpora al programa objeto el
código necesario.
FIN

También podría gustarte