generacion codigo intermedio

Páginas: 10 (2408 palabras) Publicado: 8 de diciembre de 2014
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 producir o 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ódigointermedio 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. Estaconversió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 parser y son almacenados 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 comofunciones 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 fueresuelto modificando el método de inserción sobre la lista de tercetos utilizada en cada momento, de manera que se realiza previamente una búsqueda de algún terceto que sea exactamente igual al que estamos insertando. En caso afirmativo, insertamos en la lista no un terceto nuevo, sino un puntero al ya existente, y marcamos dicho terceto como terceto indirecto. Son tercetos indirectos aquellosmarcados con un asterisco después del índice en los volcados de la lista de tercetos. 

Ventajas:

• Permite abstraer la máquina, separar operaciones de alto nivel de su implementación a bajo nivel.
• Permite la reutilización de los front-ends y back-ends.
• Permite optimizaciones generales
• El código objeto es abstraído para una maquina virtual. esta abstracción ayuda a separar operacionesde alto nivel y realizar dependientes de la maquina.
• La generación de código y el asignamiento de registros temporales son separados de las rutinas semánticas, los cuales solo trabajan con la abstracción presentada por la representación intermedia. las dependencias del código objeto son aisladas de las rutinas de generación de código.
• La abstracción puede ser hecha en el nivel derepresentación intermedia. esta organización ayuda a hacer una optimización completamente independiente del código objeto, con lo que hace que las rutinas de optimización complejas sean más transportables. debido a que las representaciones intermedias son por diseño mas abstracta y uniforme, las rutinas de optimización puede ser más simples.

Desventajas: 

• Implica una pasada más para el compilador(no se puede utilizar el modelo de una pasada, conceptualmente simple).
• Dificulta llevar a cabo optimizaciones específicas de la arquitectura destino.
• Suele ser ortogonal a la máquina destino, la traducción a una arquitectura específica será más larga e ineficiente


Formas de Representación Intermedia

En la historia de los compiladores han sido utilizadas una amplia variedad de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Generacion De Un Codigo Intermedio
  • Unidad viii generación de código intermedio
  • Unidad vi.- generacion de codigo intermedio
  • Generación De Código Intermedio
  • Generacion de Codigo Intermedio
  • Generacion de codigo intermedio (compilador)
  • codigo intermedio
  • Codigo intermedio

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS