Generador De código Intermedio
Enviado por crisb17 • 26 de Marzo de 2015 • 970 Palabras (4 Páginas) • 242 Visitas
Generación de código intermedio
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 intermedia como un programa para una máquina 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 representación intermedia puede tener diversas formas. Existe una forma intermedia llamada «código de tres direcciones» que es como el lenguaje ensamblador de una máquina en la que cada posición de memoria puede actuar como un registro. El código de tres direcciones consiste en una secuencia de instrucciones, cada una de las cuales tiene como máximo tres operando. Esta representación intermedia tiene varias propiedades:
Primera.- Cada instrucción de tres direcciones tiene a lo sumo un operador, además de la asignación, por tanto, cuando se generan estas instrucciones, el traductor tiene que decidir el orden en que deben efectuarse las operaciones.
Segunda.- El traductor debe generar un nombre temporal para guardar los valores calculados por cada instrucción.
Tercera.- Algunas instrucciones de «tres direcciones» tienen menos de tres operandos, por ejemplo, la asignación.
http://es.wikipedia.org/wiki/Compilador
GENERACION DE CODIGO INTERMEDIO
El generador de código toma como entrada una representación intermedia del programa fuente y produce como salida un programa objeto equivalente; Es posible producirlo no una fase de optimización antes de la generación de código. Dicha fase intente transformar el código intermedio en una forma de la que se pueda producir código objeto más eficiente.
El código intermedio es un código abstracto independiente de la máquina para la que se generará el código objeto. El código intermedio ha de cumplir dos requisitos importantes: ser fácil de producir a partir del análisis sintáctico, y ser fácil de traducir al lenguaje objeto. Esta fase puede no existir si se genera directamente código máquina, pero suele ser conveniente emplearla.
Ejemplo:
Consideremos, por ejemplo, un código intermedio de tercetos, llamado así porque en cada una de sus instrucciones aparecen como máximo tres operandos. La sentencia traducida a este código intermedio quedaría2:temp1 := inttoreal (2)temp2 := id3 * temp1temp3 := id2 + temp2id1 := temp3
El analizador sintáctico va generando acciones que valida el analizador semántico y que se convierten en tercetos. Esta conversión en tercetos constituye el generador de código intermedio.
Dado que el lenguaje puede presentar distintas funciones anidadas, los tercetos los generamos por orden del pares y son almacenado en un sitio u otro dependiendo del contexto en que nos encontremos. Es decir, se almacenan en una lista de tercetos dependiente de la Tabla de Símbolos. Hay tantas listas de tercetos como funciones haya en el código fuente más una lista de tercetos asociada a la Tabla de Símbolos Global
No obstante una vez finalizado el análisis, todos estos tercetos repartidos en distintas listas se vuelcan a una sola lista de tercetos global. Esta será la que finalmente se optimice y a partir de la que se generará el programa en ensamblador.
El problema de tener que manejar tercetos indirectos fue
http://www.buenastareas.com/ensayos/Generacion-Codigo-Intermedio/65574289.html
Código intermedio es una interpretación de
...