Optimización de codigo intermedio

Páginas: 9 (2196 palabras) Publicado: 27 de marzo de 2012
COMPILADORES E INTERPRETES: OPTIMIZACIÓN
Luis A. Ochoa P. ziul1979@gmail.com

Introducción
Con la bajada de precios del hardware y de los dispositivos de almacenamiento, y con el incremento exorbitante de la potencia de procesamiento y el espacio de almacenamiento, el espacio que pueda ocupar y utilizar internamente el compilador deja de ser un problema. Pero, la velocidad de ejecución, tantodel compilador como del código objeto creado, continúa siendo un problema vital, en especial en aplicaciones de tiempo real y en aplicaciones de cálculo intensivo. El compilador debe generar un código objeto eficiente y de alta calidad.

Introducción
Dado que el proceso de generación de código objeto es básicamente un proceso de sustitución de macros, el código generado puede acabar siendo de muymala calidad. La tarea principal del denominado proceso de optimización no es crear un código que se ejecute más rápidamente, sino mejorar su calidad y eficiencia para incrementar su velocidad de ejecución y reducir su espacio ocupado. La optimización busca:
Incrementar la velocidad ¤ Reducir el espacio
¤

¨

Introducción
¨

Las optimizaciones de espacio suelen ser incompatibles con las develocidad:
¤ mejorar

la velocidad de expresión suele aumentar el espacio requerido y viceversa.

¨

Durante la compilación, el proceso de mejora de código se puede hacer en dos momentos y sobre dos tipos de código distintos:
¤ El

código intermedio de salida del análisis semántico. ¤ El código objeto de salida del generador de código.

Introducción
¨

Puesto que estadísticamente sabemos que un programautiliza el 90% del tiempo de ejecución en el 10% del código, las técnicas de optimización se basan en un amplio análisis de la estructura del programa y del flujo de datos, y subdividen el programa en regiones de optimización. El análisis del flujo de control intenta encontrar este 10% de código para poderlo optimizar sin demasiado coste de proceso. En este sentido, las técnicas de mejora sepueden aplicar en dos ámbitos:
¤ ¤

Local, si sólo utiliza información de un bloque básico (por ejemplo, un bucle). Global, si utiliza información de un conjunto de bloques básicos.

Introducción
¨

Una vez determinadas las regiones del código, es necesario decidir qué técnicas de mejora específicas hay que aplicar en cada región. Para tomar esta decisión, se estudia un conjunto de programasrepresentativos del lenguaje fuente, se selecciona un conjunto de optimizaciones de entre todas las posibles y se comprueba que alcancen los objetivos siguientes:
¤ Preservar

el significado del programa. No deben cambiar el resultado del programa ni provocar errores inexistentes. ¤ Mejorar la velocidad de ejecución o disminuir el espacio del código generado. ¤ Proporcionar un buen beneficio con un mínimode esfuerzo.

Introducción
¨

Si las técnicas de mejora actúan sobre el código intermedio, no se podrán utilizar instrucciones específicas de la máquina de ejecución, dado que el código intermedio es independiente de la misma. Por lo tanto, podemos dividir las técnicas se mejora de código en dos grandes grupos:
¤

Dependientes de la máquina. Requieren conocer el hardware de ejecución y suconjunto de instrucciones. Intentan mejorar el código aprovechando al máximo los recursos internos del hardware, como la asignación de registros o el uso de instrucciones específicas. Sólo se pueden aplicar al código objeto. ¤ Independientes de la máquina. Son de carácter general y se suelen aplicar sobre el código intermedio y sobre el código objeto.

Bloques básicos de optimización
¨

¨

¨

Un bloquebásico es una unidad fundamental de código, una secuencia de instrucciones en la que el flujo de control entra en el inicio del bloque y sale al final. Al aplicar una mejora sobre un bloque básico, sólo nos debe preocupar que los valores de las variables al principio del bloque y los de la salida coincidan con los del código original sin transformar. Un nombre está vivo al final de un bloque...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • optimizacion de codigo
  • Optimizacion de codigo
  • codigo intermedio
  • Codigo intermedio
  • Codigo intermedio
  • Optimizacion de Codigo
  • Optimizacion Codigo
  • Técnicas de un generador de código intermedio

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS