Está en la página 1de 12

Nombre: Miguel Angel Muzquiz Vasquez

El generador de cdigo toma como entrada


una representacin intermedia del programa
fuente y produce como salida un programa
objeto equivalente; Es posible producir o no
una fase de optimizacin antes de la
generacin de cdigo.
Dicha fase intente transformar el cdigo
intermedio en una forma de la que se pueda
producir cdigo objeto ms eficiente.
El cdigo intermedio es un cdigo abstracto
independiente de la mquina para la que se
generar el cdigo objeto

El cdigo intermedio ha de cumplir dos
requisitos importantes:
ser fcil de producir a partir del anlisis
sintctico

ser fcil de traducir al lenguaje objeto. (Esta
fase puede no existir si se genera
directamente cdigo mquina, pero suele
ser conveniente emplearla.)
Ventajas:
Permite abstraer la mquina, separar
operaciones de alto nivel de su
implementacin a bajo nivel.
Permite la reutilizacin de los front-ends y
back-ends.
Permite optimizaciones generales
El cdigo objeto es abstrado para una
maquina virtual. esta abstraccin ayuda a
separar operaciones de alto nivel y realizar
dependientes de la maquina.
Desventajas:
Implica una pasada ms para el compilador
(no se puede utilizar el modelo de una
pasada, conceptualmente simple).
Dificulta llevar a cabo optimizaciones
especficas de la arquitectura destino.
Suele ser ortogonal a la mquina destino, la
traduccin a una arquitectura especfica ser
ms larga e ineficiente
Hay muchos tipos y estilos de cdigo intermedio:


Formas de cdigo intermedio:


rbol sintctico
Notacin Postfija
Cdigo de tres direcciones









Permite demostrar que una secuencia de caracteres es una
determinada categora sintctica





EJEMPLO
t1=2*a
t2=b-3
t3=t1+t2
2*a+(b-3) EJEMPLO:
2a*b3-+
La notacin postfija pone el operador al final de los dos operandos
Resultado :AB + 5 -



Es una especie de cdigo maquina de la forma general:

x:=y op z


No se permite ninguna expresin aritmtica compuesta, pues solo
hay operadores del lado derecho de la proposicin.
Expresiones compuestas se descomponen en una secuencia
generando elementos temporales.






Consideremos, por ejemplo, un cdigo
intermedio de tercetos, llamado as porque
en cada una de sus instrucciones aparecen
como mximo tres operandos. La sentencia
traducida a este cdigo intermedio
quedara2:
temp1 := inttoreal (2)temp2 := id3 *
temp1temp3 := id2 + temp2id1 := temp3
Ejemplo:

También podría gustarte