Compiladores
Compiladores II
1
Usos del Código Intermedio • Múltiples lenguajes y compiladores
– n+m módulos -> n*m compiladores
• Optimización
– Representación de fácilmodificación
• Modelos de generación de código o Máquinas abstractas
– FAM, G-machine, máquina de Warren
• Compiladores transportables
– PASCAL /P-Code, JAVA
• Interpretación rápida
– OAKLisp,CLISP
• Depuración
– Intérpretes de C u otros lenguajes
Compiladores II
2
Notación polaca Inversa (postfija) • Se utiliza principalmente para la representación de expresiones aritméticas •Expresión a notación polaca inversa
– Algoritmo
• Representar la expresión en forma de árbol sintáctico • Recorrer el árbol en postorden
– Ejemplo: a+b*c-d
+ a b
d * c
Código: a b c * + dCompiladores II 3
Extensión a instrucciones de control de flujo
• Ejemplo:
– Fuente: if then else – No se puede traducir a: If ya que solo se ha de evaluar una de las instrucciones –Código generado
etiqueta1 Salta si falso etiqueta2 Salta etiqueta1: etiqueta2:
Compiladores II
Código más típico Salta Si falso Etiqueta1 Salta Etiqueta2 Etiqueta1: Etiqueta2:
4
Pros yContras de la Notación Polaca Inversa • Generación de código:
– Simple – No utiliza registros
• Optimización
– Es difícil de reordenar ya que hay que considerar el contenido de la pila
•Interpretación rápida
– Es muy fácil de interpretar ya que solo necesita una pila
• Transportable:
– Si, ya que todos los procesadores implementan una pila.
Compiladores II
5
n-tuplas • En lanotación de n-tuplas cada instrucción es una n-tupla.
– Tripletas
• , , • El resultado se asocia al número de tripleta
– Tripletas indirectas
• Son tripletas donde el orden de ejecución seespecifica a parte.
– Cuadruplas
• , , ,
Compiladores II
6
Tripletas • Tripleta: , ,
el resultado se asocia al número de tripleta – Ejemplo: W*X+(Y+Z)
1. *, W, X 2. +, Y, Z 3. +,...
Regístrate para leer el documento completo.