Generación de código intermedio
Los pasos para construir un compilador, incluyen la generación de código intermedio antes de completar la fase de generación de código, el propósito de tener uncódigo intermedio es contar con una representación que se encuentre cerca del lenguaje de la máquina destino. La elección de una representación intermedia varía de un compilador a otro, estarepresentación puede ser desde un nuevo lenguaje hasta estructuras de datos internas utilizadas en las fases del compilador.
Las representaciones intermedias más importantes son:
1. Los árboles, incluyendolos de análisis de sintáctico y los árboles sintácticos.
2. Código de tres direcciones.
Un compilador podría construir un árbol sintáctico al mismo tiempo que se genera código de tres direcciones,sin embargo es común que los compiladores generen código de tres direcciones mientras se avanza en el proceso de construir el árbol, sin necesidad de construir en realidad el árbol.
Código detres direcciones
El código de tres direcciones es básicamente una representación lineal de un árbol de análisis sintáctico. En tres direcciones hay un máximo de tres direcciones a las que se puedehacer referencia por cada instrucción.
Las siguientes instrucciones están generadas en tres direcciones:
A = X + Y
B = Z
M = mat [ D]
mat [ D ] = M
En cada instrucción de los ejemplosanteriores, cómo máximo se hace referencia a tres direcciones.
Las siguientes instrucciones no son código de tres direcciones:
(1) Mat [ D] = Mat [ x] * Mat [ y]
(2) Mat [B] = Mat [Z]
En lalínea (1) se hace referencia a 6 direcciones y en la línea (2) se hace referencia a 4 direcciones.
El nombre de constantes, variables o cualquier otra representación, cuenta como una dirección, cadavez que aparece en la instrucción, es por eso que, en los ejemplos anteriores, Mat se cuenta cada vez que aparece en la instrucción.
EJEMPLOS
Ejemplo 1 : Para la instrucción de asignación,...
Regístrate para leer el documento completo.