Código intermedio

11
Nombre: Nadia Berenice Leos Hernández Blanca Alicia Rodríguez Rivas

Transcript of Código intermedio

Page 1: Código intermedio

Nombre: Nadia Berenice Leos Hernández Blanca Alicia Rodríguez Rivas

Page 2: Código intermedio

Código intermedio

es un codigo abstracto independiente de la máquina para la que se generará el código objeto.

Page 3: Código intermedio

El código intermedio ha de cumplir dos requisitos importantes

ser fácil de producir a partir del análisis sintáctico

ser fácil de traducir al lenguaje objeto

Page 4: Código intermedio

Implementación de los tercetos

Los tercetos fueron implementados a través de herencia. Diseñamos

una clase padre c_terceto, que contenía los campos comunes a todos los tercetos (todos), y que declaraba una serie de métodos virtuales como show y generar_codigo.

Cada objeto hijo de la clase c_terceto, implementa cada uno de esos métodos, de manera que acabada la optimización del código intermedio, solo tenemos que ir llamando al método generar_codigo del terceto contenido en la lista.

Page 5: Código intermedio

Tercetos empleadosBRANCH genera el salto cuando la condición no se cumple.

PUSH solamente se usa para introducir los parámetros antes de una llamada a función o a constructor.

RET se emplea para indicar el valor a devolver por la subrutina.

PUSHN y POPN se emplean para indicar al generador de código final el número de temporales que van a ser necesarios (PUSHN) o los que han dejado de serlo (POPN).

PROMPT y DOCWRI fueron implementados como tercetos aparte para mejorar la claridad de los listados de los tercetos. En realidad, podíamos haberlos implementado a través de los tercetos PUSH, CALL y RET.

CTE_CAD no van insertados junto con el resto de tercetos, sino que van en una lista auxiliar especial, que contiene todas las cadenas utilizadas por el proceso de compilación.

Page 6: Código intermedio

for

Do

Función

While

break

Switch

If else

Bloque

Estructuras de control

Page 7: Código intermedio

Hay muchos tipos y esti los de código intermedio:

Formas de código intermedio:

Árbol s intácticoNotación PostfijaCódigo de tres direcciones

Page 8: Código intermedio

Es una especie de código maquina de la forma general :

x:=y op z

No se permite ninguna expresión aritmética compuesta, pues solo hay operadores del lado derecho de la proposición.

Expresiones compuestas se descomponen en una secuencia generando elementos temporales.

Page 9: Código intermedio

La notación postfi ja pone el operador al f inal de los dos operandos

Page 10: Código intermedio

Permite demostrar que una secuencia de caracteres es unadeterminada categoría s intáctica

Page 11: Código intermedio

EJEMPLO

t1=2*at2=b-

3t3=t1

+t2

2*a+(b-3) EJEMPLO:

2a*b3-+