Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Abril 2023
Generación de Código Intermedio
• Después de haber conducido el análisis semántico el compilador genera
un código intermedio entre el código fuente y el código de la maquina
objetivo (unos y ceros).
68
5.
6 +8
entre los dos operandos.
68
expresión queda: ab + 5-.
• NOTACIÓN POLACA
• CÓDIGO P
• CÓDIGO DE 3 DIRECCIONES
Notación Polaca
• La notación polaca es la originada por un
Autómata con pila, en la que los operadores
siempre preceden a los operadores sobre los
que actúan, y que tiene la ventaja de no
necesitar paréntesis:
• Se utiliza principalmente para la
representación de expresiones aritméticas.
• Expresión a notación polaca inversa.
• Algoritmo ü representa la expresión en forma
de árbol sintáctico.
• ü Recorrer el árbol en postorden
• Ejemplo: a + b * cd
Ventajas Notación Polaca
Ventajas Desventajas
• Generación de código: simple, • Optimización: es difícil de
no utiliza registros. reordenar ya que hay que
• Interpretación rápida: es muy considerar el contenido de la
fácil de interpretar ya que solo pila.
necesita una pila.
• Transportable: si, ya que todos
los procesadores implementan
una pila.
Código P
• La máquina de código-p, la cual es una máquina virtual, ejecuta
códigos binarios de un procesador hipotético, es decir, el diseñador,
en lugar de usar el conjunto de instrucciones de un procesador como
podría ser el Pentium, etcétera.
•Cuádruplas
•Tripletas
Cuádruplas
• Una cuádrupla es una estructura de tipo registro con cuatro campos: op, result,
arg1 y arg2.
• En general, las instrucciones que no requieren todos los campos dejan vacíos los
que no utilizan: –
• Para evaluar una expresión compleja, hay que dividirla en una secuencia
equivalente de expresiones simples.
– tmp1 = (suma, y, 2)
– (asigna, x, tmp1)
• Pero es posible evitar identificadores temporales, usando las propias instrucciones para
representan el valor del nombre temporal, eliminando el campo “tmp1” en el que se
guardaba temporalmente el resultado (por innecesario):
(1) (suma, y, 2)
(2) (asigna, x, (1))
Bibliografía
• https://kataix.umag.cl/~jaguila/Compilers/T01_Fases_Compilador.pdf
• http://www.cc.uah.es/ie/docencia/ProcesadoresDeLenguaje/ProcesadoresDeLen
guajeTema7_1xpagina.pdf
• https://5d5eec0cb105c.site123.me/unidades/unidad-2-generaci%C3%B3n-de-
c%C3%B3digo-intermedio