Codigointermedio 140219115248 Phpapp02

Páginas: 18 (4464 palabras) Publicado: 8 de abril de 2015
Generación de código. Procesadores de
Lenguaje I

Generación de Código Intermedio
Proceso de Síntesis
„
„

Lenguaje Intermedio
Generación de Código

Ventajas del código intermedio
„
„

Facilitar la fase de optimización
Aumentar la portabilidad del compilador de una máquina a otra
Š Se puede utilizar el mismo analizador para diferentes generadores
Š Se pueden utilizar optimizadores independientesde la máquina

„

Facilitar la división en fases del proyecto

Fuente

Scanner

Parser

Generador
de
Código

LI

Objeto

TDS

Generación de código. Procesadores de
Lenguaje I

Generación de Código Intermedio
„

Aumentar la portabilidad del compilador de una máquina a otra
Š Se puede utilizar el mismo analizador para diferentes generadores
Š Se pueden utilizar optimizadores independientes de lamáquina

C

back-ends

front-ends
Pascal

Ada
C++
Java

Generador
de
Código Intemedio

Optimización
independiente
de máquina

Intel X

Dec-Alpha

Motorola

N+M vs N*M

1

Generación de código. Procesadores de
Lenguaje I

Fase de Análisis
position := initial + rate * 60
lexical analyzer
id1 := id2 + id3 * 60
syntax analyzer

:=
+

id1

*

id2l

60

id3
semantic analyzer

:=
Symbol
Table

rate….

*id2l

inttoreal

id3

position ....
initial ….

E
r
r
o
r
s

+

id1

60
intermediate code generator

Generación de código. Procesadores de
Lenguaje I

Fase de Síntesis
Symbol Table
position ....
initial ….
rate….

intermediate code generator

E
r
r
o
r
s

temp1 := inttoreal(60)
temp2 := id3 * temp1
temp3 := id2 + temp2
id1 := temp3

3 address code

code optimizer
temp1 := id3 * 60.0
id1 := id2 +temp1
final code generator
MOVF id3, R2
MULF #60.0, R2
MOVF id2, R1
ADDF R1, R2
MOVF R1, id1

2

Generación de código. Procesadores de
Lenguaje I

Tipos de representaciones
intermedias

La representación del código intermedio depende
de la máquina objeto:
„
„

„

0-direcciones: código para máquinas de pila (código P)
2-direcciones: códigos para máquinas con operaciones
sobre registros de memoria3-direcciones: código para máquinas de arquitectura
RISC

En todo caso, añade un recorrido descendente
adicional para generar el código final

Generación de código. Procesadores de
Lenguaje I

Tipos de representaciones
intermedias
Propiedades:
„
„
„

Fácil de producir en el análisis semántico
Fácil de traducir a código máquina real
Instrucciones simples y concisas, de fácil optimización

Tipos
„
„
„„

Árboles de Sintaxis Abstracta
Notación Polaca Inversa (RPN)
Código P
Códigos de tres direcciones
Š Cuartetos
Š Tercetos
Š Tercetos Indirectos

3

Generación de código. Procesadores de
Lenguaje I

Representaciones intermedias:
RPN
Notación Polaca Inversa (RPN)
„

Los operadores van después de los operandos
ŠS=A+B*C

„

→ SABC*+=

Ventajas
Š Facilidad para generar código a partir de ella
Š Es lanotación más sencilla para el lenguaje intermedio

„

Inconvenientes
Š El código es difícil de entender
Š Poca flexibilidad
Š No es útil para optimización de código

Generación de código. Procesadores de
Lenguaje I

Representaciones intermedias: P
Código P
„
„
„

Extensión RPN para máquina completa (etiquetas, saltos)
Razones históricas (intérpretes Pascal)
Primer caso de máquina virtual
Š Todaslas operaciones toman como argumentos la pila
Š Cargar/almacenar: lod, lda, ldc, sto
Š Aritmética: adi, sbi, mpi
Š Saltos: ujp, fjp, lab

„

Similares ventajas e inconvenientes (es un CI muy
próximo a un lenguaje ensamblador)

4

Generación de código. Procesadores de
Lenguaje I

Representaciones intermedias: P
Ejemplos Código P
Ejemplo 1:
x:=y+1

Ejemplo 2:
if cond then x=3

Codigo P
lda x //carga direccion x
lod y // carga valor y
ldc 1 // carga constante 1
adi
// suma 2 pos pila
sto
// almacena tope en inf.

Codigo P
lod cond // carga cond
fjp L1
// si falso salta a L1
lda x
// carga direccion x
ldc 3
// carga constante 3
sto
// almacena tope en inf
lab L1 // etiqueta L1

1

3

y
&x

cond

&x







Generación de código. Procesadores de
Lenguaje I

Árboles de Sintaxis Abstracta...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Atencionalciudadano Cliente 120724093627 Phpapp02
  • elonceniodeleguia 130522223217 phpapp02
  • calculoydiluciondemedicamentos 140812233128 phpapp02
  • miomatosisuterina 130729190106 phpapp02
  • Ensayodecbr 140506165708 Phpapp02
  • Temarioenarm2013 140315153619 Phpapp02
  • danzasanisidrolabrador 121011121556 phpapp02
  • Lesionesporarmablanca 130124004942 Phpapp02

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS