Codigo Intermedio

Páginas: 11 (2740 palabras) Publicado: 25 de noviembre de 2012
Generación de Código Intermedio
Francisco Rodríguez Zamora Universidad de Costa Rica, Escuela de Ciencias de Computación e Informática San José, Costa Rica francisco.rodriguez@ecci.ucr.ac.cr

Jonathan Calderón Varela Universidad de Costa Rica, Escuela de Ciencias de Computación e Informática San José, Costa Rica jonathan.calderon@ecci.ucr.ac.cr
Abstract An intermediate representation is adata structure that represents the program source during the process of translation into object code. At first, the compiler translates source code into a more suitable form for optimization, and then turns it into machine code. The compiler transforms the code into a more manageable language, usually three-address code, which represents exactly one instruction code machine, does type checking andtranslates expressions. Keywords: compiler, intermediate code, three-address code, type checking, backpatching.

Resumen Una representación intermedia es una estructura de datos que representa al programa fuente durante el proceso de la traducción a código objeto. El compilador primero traduce el código fuente en una forma mas situable para la optimización, para luego convertirla en el código demaquina. El compilador transforma el código en un lenguaje mas manejable, usualmente código de tres direcciones, el cual representa exactamente una instrucción de código de maquina, verifica tipos y traduce expresiones. Palabras clave: compilador, código intermedio, código de tres direcciones, verificación de tipos, backpatching.

Introducción
El proceso de la compilación se desglosa en dospartes: la parte que depende solo del lenguaje fuente (etapa inicial o front-end) y la parte que depende solo del lenguaje objeto (etapa final o back-end). La etapa inicial traduce un programa fuente a una representación intermedia s partir de la cual la etapa final genera el código objeto. De esta forma, los detalles que tienen que ver con las características del lenguaje objeto (código ensamblador,código maquina absoluto o relocalizable,...), la arquitectura de la maquina (numero de registros, modos de direccionamiento, tamaño de los tipos de datos, memoria cache,...), el entorno de ejecución (estructura de registros y memoria de la máquina donde se va a ejecutar el programa...) y el sistema operativo se engloban en la etapa final y se aíslan del resto. El código intermedio es un códigoabstracto independiente de la máquina para la que se generará el código objeto. El código intermedio ha de cumplir dos requisitos importantes: ser fácil de producir a partir del análisis sintáctico, y ser fácil de traducir al lenguaje objeto. Con una representación intermedia bien definida, un compilador para el lenguaje i y la maquina j puede ser construido combinando el front-end para el lenguajei con el back-end de la maquina j. De esta manera se pueden construir m*n compiladores escribiendo únicamente m front-ends y n back-ends.

1

Variantes a los árboles de Sintaxis

Tomando como base los árboles de análisis sintáctico, que representan las instrucciones del programa, se puede generalizar un nuevo tipo de grafo, llamado un grafo acíclico diseccionado para las subexpresiones deuna expresión [1]. En este grafo, una subexpresion N tendría más de un padre, si esta apareciera varias veces en la misma expresión (figura 1). En un árbol de sintaxis regular, la expresión parecería tantas veces como aparezca en la expresión original. Esta característica de los grafos de subexpresiones hace que el compilador genere código más eficiente al evaluar una expresión. Una forma deimplementar un grafo aciclico de subexpresiones es mediante un vector. En cada entrada del vector se guarda un código de operación y, dependiendo de la operación, un valor, o referencias a las entradas del vector que pueda utilizar ese vector (figura 2). El principal problema de esta forma de implementación, es que cada vez que se quiera encontrar un nodo de la expresión, hay que recorrer todo el...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Codigo intermedio
  • Codigo intermedio
  • Técnicas de un generador de código intermedio
  • Genercion de codigo intermedio
  • Generación de código intermedio
  • Generacion De Un Codigo Intermedio
  • Compilador para generar código intermedio
  • Unidad vi.- generacion de codigo intermedio

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS