Código intermedio

10,325 views

Published on

Published in: Education, Business, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
10,325
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
181
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Código intermedio

  1. 1. Nombre: Nadia Berenice Leos Hernández Blanca Alicia Rodríguez Rivas
  2. 2. Código intermedio es un codigo abstracto independiente de la máquina para la que se generará el código objeto.
  3. 3. 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
  4. 4. 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.
  5. 5. Tercetos empleados  BRANCH 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.
  6. 6. for Do Función While break Switch If else Bloque Estructuras de control
  7. 7. Hay muchos tipos y estilos de código intermedio: Formas de código intermedio: Árbol sintáctico Notación Postfija Código de tres direcciones
  8. 8. 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.
  9. 9. La notación postfija pone el operador al final de los dos operandos
  10. 10. Permite demostrar que una secuencia de caracteres es una determinada categoría sintáctica
  11. 11. EJEMPLO t1=2* a t2=b- 3 t3=t1 +t2 2*a+(b-3)EJEMPLO: 2a*b3-+

×