Codigo

Páginas: 12 (2988 palabras) Publicado: 1 de agosto de 2011
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes

Tema 6
Parte II
Generación de código intermedio

Javier Vélez Reyes jvelez@lsi.uned.es

Javier Vélez Reyes jvelez@lsi.uned.es

Objetivos del Tema

Estudiar la generación de código intermedio Entender su propósito y funciones Aprender los tipos de lenguajesintermedios Aprender a generar código de tres direcciones Entender las representaciones alternativas Aprender a generar código para
Expresiones Asignaciones Construcciones de control de flujo Acceso a estructuras de datos complejas

Adquirir actitud crítica ante el código intermedio

1

Javier Vélez Reyes jvelez@lsi.uned.es

Índice General
Introducción Lenguajes intermedios
Árbolessintácticos abstractos Grafos dirigidos acíclicos

Generación de código intermedio
Representación en código intermedio Código intermedio para expresiones Código intermedio para instrucciones Código intermedio para arrays Código intermedio para registros

Javier Vélez Reyes jvelez@lsi.uned.es

Introducción
Generación de código intermedio
Transición de un Árbol de Análisis Sintáctico A un códigointermedio cercano a la máquina

Ventajas
Supone una frontera entre el front end y el back end Es un código pretendidamente próximo a la máquina Es independiente de una arquitectura especifica
Registros Memoria Juego de instrucciones Modos de direccionamiento

Los direccionamiento están en términos simbólicos
Variables temporales Variables locales Variables globales

Se puede aplicaroptimización a este nivel

2

Javier Vélez Reyes jvelez@lsi.uned.es

Introducción
El código intermedio como frontera…
Independencia física Análisis Léxico Análisis Sintáctico Análisis Semántico Tabla de símbolos Generación de código intermedio Optimización de código intermedio Generación de código objeto Dependencia física Gestión de errores

Javier Vélez Reyes jvelez@lsi.uned.es

Lenguajesintermedios
Árboles sintácticos abstractos (ASA)
El código se representa en forma de árbol donde
Cada nodo no terminal representa un operador Cada nodo terminal representa un operando

Más próximo al lenguaje fuente

a := b * - c + b * - c a

:= + * b c b * c

3

Javier Vélez Reyes jvelez@lsi.uned.es

Lenguajes intermedios
Gramática
S E E E E E id := E E1 + E2 E1 * E2 - E1 ( E1 )id S.apn := hazNodo (‘:=’, hazHoja (id, id.lugar), E.apn) E.apn := hazNodo (‘+’, E1.apn, E2.apn) E.apn := hazNodo (‘*’, E1.apn, E2.apn) E.apn := hazNodo ( ‘-’, E1.apn) E.apn := E1.apn E.apn := hazHoja (id, id.lugar)

a := b * - c + b * - c a

:= + * b c b * c

Javier Vélez Reyes jvelez@lsi.uned.es

Lenguajes intermedios
Representación computacional
Estructura dinámica Tabla de nodos
0 12 3 4 5 6 7 8 9 ID b ID c MENOSU 1 POR 0 2 ID b ID c MENOSU 5 POR 4 MAS 3 ID a 9 8 6 7

asigna ID MAS POR ID MENOSU ID POR

a

b

ID MENOSU

b

c

ID

c

10 ASIGNA

4

Javier Vélez Reyes jvelez@lsi.uned.es

Lenguajes intermedios
Grafos dirigidos acíclicos (GDA)
El código se representa en forma de grafo
Cada nodo no terminal representa un operador Cada nodo terminalrepresenta un operando Se reutilizan los nodos

Más próximo al lenguaje fuente
a := b * - c + b * - c a * b c := +

Javier Vélez Reyes jvelez@lsi.uned.es

Lenguajes intermedios
Gramática
S E E E E E id := E E1 + E2 E1 * E2 - E1 ( E1 ) id S.apn := hazNodo (‘:=’, hazHoja (id, id.lugar), E.apn) E.apn := hazNodo (‘+’, E1.apn, E2.apn) E.apn := hazNodo (‘*’, E1.apn, E2.apn) E.apn := hazNodo ( ‘-’,E1.apn) E.apn := E1.apn E.apn := hazHoja (id, id.lugar)

a := b * - c + b * - c a

:= + * b c

La operación hazNodo devuelven un nodo ya existente siempre que sea posible en lugar de construir uno nuevo

5

Javier Vélez Reyes jvelez@lsi.uned.es

Lenguajes intermedios
Representación computacional
Estructura dinámica Tabla de nodos
0 1 2 3 4 5 6 ID b ID c MENOSU 1 POR 0 2 MAS 3...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Codigos
  • Codigo
  • Codigos
  • codigo
  • Codigo
  • Codigo
  • Codigo
  • Codigo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS