Compiladores

Páginas: 24 (5785 palabras) Publicado: 17 de septiembre de 2012
Cap´ ıtulo 7 Generaci´n de c´digo o o intermedio. Optimizaci´n o
Bibliograf´ ıa: Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores: principios, t´cnicas y herramientas, Tema 8, 9, 10 (pag. 478e 666). Louden, K.C. (1997), Compiler Construction: Principles and Practice, Tema 8, p´ginas: 398-481. a 1. Introducci´n. o 2. Tipos de representaciones intermedias: C´digo de 3-direcciones. o 3.C´digo intermedio como un atributo sintetizado. o 4. Generaci´n de c´digo para expresiones y sentencias de cono o trol: a) Proposiciones de asignaci´n. o b) Expresiones aritm´ticas. e c) Expresiones booleanas. d ) Sentencias de control. e) Funciones. 5. Optimizaci´n de c´digo: o o a) Bloques b´sicos y optimizaci´n local. a o
215

´ ´ ´ 216CAP´ ITULO 7. GENERACION DE CODIGO INTERMEDIO. OPTIMIZACIONb) Eliminaci´n de subexpresiones comunes. o c) Eliminaci´n de c´digo muerto. o o d ) Transformaciones aritm´ticas. e e) Empaquetamiento de variables temporales. f ) Mejoras en lazos.

7.1.

Introducci´n o

Como se coment´ en el primer cap´ o ıtulo el proceso de la compilaci´n se desglosa en dos partes: la parte que depende s´lo del o o lenguaje fuente (etapa inicial o front-end ) y laparte que depende s´lo del lenguaje objeto (etapa final o back-end). o Etapa inicial: corresponde con la parte de an´lisis (l´xico, a e sint´ctico y sem´ntico). a a Etapa final: corresponde con la parte de s´ ıntesis (generaci´n o de c´digo). o La etapa inicial traduce un programa fuente a una representaci´n o intermedia a partir de la cual la etapa final genera el c´digo obo jeto. De esta forma, losdetalles que tienen que ver con las caracter´ ısticas del lenguaje objeto (c´digo ensamblador, c´digo m´quina abo o a soluto o relocalizable, . . . ), la arquitectura de la m´quina (n´mero a u de registros, modos de direccionamiento, tama˜o de los tipos de n datos, memoria cache, ...), el entorno de ejecuci´n (estructura de o registros y memoria de la m´quina donde se va a ejecutar el proa grama . .. ) y el sistema operativo se engloban en la etapa final y se aislan del resto. La generaci´n de c´digo es la tarea m´s complicada de un como o a pilador. Las ventajas de utilizar esta representaci´n intermedia, o independiente de la m´quina en la que se va a ejecutar el prograa ma, son: Se puede crear un compilador para una nueva m´quina disa tinta uniendo la etapa final de la nueva m´quina a unaetapa a inicial ya existente. Se facilita la redestinaci´n. o

´ 7.2. TIPOS DE REPRESENTACIONES INTERMEDIAS: EL CODIGO DE 3-DIRECCIONES217

Se puede aplicar, a la representaci´n intermedia, un optio mador de c´digo independiente de la m´quina. o a La figura 7.1 muestra las dos etapas y como se relacionan entre s´ a trav´s de la representaci´n intermedia. ı e o
Programa fuente ETAPA INICIALETAPA FINAL Analizador Léxico Componentes léxicos Analizador Sintáctico Arbol Sintáctico Analizador Semántico Código Intermedio Optimizador de Código máquina Generador de código máquina

Código máquina

Optimizador de código intermedio

Figura 7.1: Etapa inicial y final de un compilador

En este cap´ ıtulo veremos c´mo traducir las construcciones de los o lenguajes de programaci´n como: lasdeclaraciones, asignaciones o y proposiciones de flujo de control a una representaci´n intermeo dia. La mayor parte de las traducciones de estas proposiciones se pueden implantar durante el an´lisis sint´ctico utilizando las a a t´cnicas de traducci´n vistas en en el dise˜o de esquemas de trae o n ducci´n dirigidos por la sintaxis (ETDS). o

7.2.

Tipos de representaciones intermedias: el c´digode 3-direcciones o

Una representaci´n intermedia es una estructura de datos que o representa al programa fuente durante el proceso de la traducci´n a c´digo objeto. Hasta ahora hemos usado el ´rbol de an´lio o a a

´ ´ ´ 218CAP´ ITULO 7. GENERACION DE CODIGO INTERMEDIO. OPTIMIZACION

sis sint´ctico como representaci´n intermedia, junto con la tabla a o de s´ ımbolos que conten´...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Compiladores
  • Compilador
  • COMPILADORES
  • Compiladores
  • Compiladores
  • Compiladores
  • compiladores
  • Compiladores

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS