Subido por Jonathan Gerardo hernandez cruz

Infografía Generación de Código Intermedio

Anuncio
Generación de Código
Intermedio
Ventajas
Facilitar la fase de
optimización.
Aumentar la
portabilidad del
compilador de una
máquina a otra.
Facilitar la división en
fases del proyecto.
Utilizar el mismo
analizador en
diferentes
generadores.
Poder optimizar
independientemente
de la máquina.
¿para qué sirve?
El objetivo del código intermedio es reducir
el número de programas necesarios para
construir traductores, y permitir más
fácilmente la transportabilidad de unas
máquinas a otras.
Después de los análisis sintáctico y
semántico, algunos compiladores generan
una representación intermedia explicita
del programa fuente. Esta representación
intermedia debe tener dos propiedades
importantes; debe ser fácil de producir y
fácil de traducir al programa objeto.
Tipos de representaciones
intermedias
Propiedades
Fácil de producir en
el análisis semántico.
Fácil de traducir a
código máquina real.
Instrucciones simples
y concisas.
Árboles de sintaxis abstracta.
Notación Polaca Inversa.
Código P.
Códigos de tres direcciones.
Notación Polaca Inversa
Los operadores van después de
los operandos.
S=A+B*C -> SABC*+=
Ventajas.
Facilidad de generar código.
Es la notación más sencilla para
generar código intermedio.
Código de Tres Direcciones
Sentencias del estilo x = y op z
Cada línea de código tiene un
operador y hasta tres
direcciones
Uso generoso de variable
temporales
Directamente relacionado con
evaluación de expresiones
Ejemplo: a = b*(c+d):
tmp1 = c+d
tmp2 = b*tmp1
a = tmp2
Código P
Extensión RPN para máquina
completa (etiquetas, saltos)
Razones históricas.
Primer caso de máquina virtual.
Similares ventajas e
inconvenientes a la Notación
Polaca Inversa.
Árboles
Son árboles de
derivación en los que
no existe información
superflua.
Cada nodo hoja
representa un operando
y cada no-hoja un
operador.
Descargar