Programacion

Páginas: 5 (1218 palabras) Publicado: 30 de julio de 2012
Franviel Sánchez Montero………………………..08-EISN-1-345
RESUMEN
Generación de código
La fase final en nuestro modelo del compilador es el generador de código. Recibe como entrada la representación intermedia que produce el front-end del compilador, junto con la información relevante de la tabla de símbolos, y produce como salida un programa de destino equivalente en forma semántica.
Un generador decódigo tiene tres tareas principales: selección de instrucciones, repartición y asignación de registros, y ordenamiento de instrucciones. La importancia de estas tareas se describe en la sección 8.1. La selección de instrucciones implica la selección de instrucciones apropiadas de la máquina destino para implementar las instrucciones de la representación intermedia. La repartición y asignación deregistros implica decidir qué valores mantener en qué registros. El ordenamiento de instrucciones implica decidir en qué orden se va a programar su ejecución.
Entrada del generador de código
La entrada del generador de código es la representación intermedia del programa fuente producido por la interfaz de usuario, junto con la información en la tabla de símbolos que se utiliza para determinarlas direcciones en tiempo de ejecución de los objetos de datos denotados por los nombres en la representación intermedia.
Selección de instrucciones
El generador de código debe asignar el programa de representación intermedia a una secuencia de código que la máquina de destino pueda ejecutar. La complejidad de realizar esta asignación se determina mediante factores como:
El nivel de larepresentación intermedia.
La naturaleza de la arquitectura del conjunto de instrucciones.
La calidad deseada del código generado.
Asignación de registros
Un problema clave en la generación de código es decidir qué valores guardar en qué registros. Los registros son la unidad computacional más veloz en la máquina destino pero, por lo general, no tenemos suficientes como para contener todos los valores.Los valores que no se guardan en registros deben residir en la memoria. Las instrucciones que involucran operando de registros son invariablemente más cortas y rápidas que las que involucran el uso de operando en la memoria, por lo que la utilización eficiente de los registros es muy importante.
A menudo, el uso de los registros se divide en dos subproblemas:
Repartición de registros, durante lacual seleccionamos el conjunto de variables que residirán en los registros, en cada punto del programa.
Asignación de registros, durante la cual elegimos el registro específico en el que residirá una variable.
Grafos de flujo
Una vez que un programa de código intermedio se particiona en bloques básicos, representamos el flujo de control entre ellos mediante un grafo de flujo. Los nodos delgrafo de flujo son los nodos básicos. Hay una flecha del bloque B al bloque C sí, y sólo si es posible que la primera instrucción en el bloque C vaya justo después de la última instrucción en el bloque B. Hay dos formas en las que podría justificarse dicha flecha:
Hay un salto condicional o incondicional desde el final de B hasta el inicio de C.
C sigue justo después de B en el orden original delas instrucciones de tres direcciones, y B no termina en un salto incondicional.
Ciclos
Las construcciones de los lenguajes de programación, como las instrucciones while, do-while y for, ocasionan de manera natural el surgimiento de ciclos en los programas. Como casi cualquier programa invierte la mayor parte de su tiempo en ejecutar sus ciclos, es muy importante para un compilador generar un buencódigo para los ciclos. Muchas transformaciones de código dependen de la identificación de los "ciclos" en un grafo de flujo.
Optimización de los bloques básicos
A menudo podemos obtener una considerable mejora sobre el tiempo de ejecución del código, con sólo realizar una optimización local dentro de cada bloque básico por sí mismo. En capítulos posteriores, empezando desde el capítulo 9,...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Programación
  • Programacion
  • Programacion
  • Programación
  • Programacion
  • Programacion
  • Programacion
  • Programacion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS