<< Volver atrás

Tesis:

Técnicas avanzadas de compilación basadas en interpretación abstracta y transformación de programas


  • Autor: PUEBLA SANCHEZ, Alvaro Germán

  • Título: Técnicas avanzadas de compilación basadas en interpretación abstracta y transformación de programas

  • Fecha: 1998

  • Materia: MATEMATICAS. Teseo;CIENCIAS DE LA COMPUTACION. Teseo;INTELIGENCIA ARTIFICIAL. Teseo;LENGUAJES DE PROGRAMACION. Teseo

  • Escuela: FACULTAD DE INFORMATICA

  • Departamentos: INTELIGENCIA ARTIFICIAL

  • Acceso electrónico:

  • Director/a 1º: HERMENEGILDO SALINAS, Manuel

  • Resumen: El análisis estático de programas juega un papel cada vez más importante en los compiladores actuales, ya que permite obtener información en tiempo de compilación sobre el comportamiento del programa en tiempo de ejecución. Dicha información es útil posteriormente tanto para comprobar que el programa cumple las especificaciones dadas como para optimizar el programa. En esta tesis se presentan primero algunas técnicas básicas de análisis global tales como algorítmos para análisis incremental eficiente, que permiten la reutilización de la información de análisis anteriores cuando un programa analizado sufre alguna modificación, y métodos para el análisis de las características complejas de los lenguajes de programación reales, tales como efectos laterales o modificación dinámica del programa. También se proponen técnicas de optimización de programas, las cuales se encuadran dentro del marco general de la especialización: el programa resultante es válido para el caso particular considerado y más eficiente que el programa original. Se presenta un tipo de especialización que es abstracta, en el sentido de que el programa se especializa no con respecto a valores concretos, sino con respecto a valores abstractos, que también se pueden ver como conjuntos (posiblemente infinitos) de valores concretos, y profundiza en la relación entre la especialización abstracta y la evaluación parcial tradicional y en cómo integrar ambas en un nuevo marco que reúne las ventajas de cada una de ellas. Se presenta también un lenguaje de aserciones que permite al mismo tiempo al usuario expresar requisitos (especificaciones) sobre el programa y al analizador expresar los resultados del análisis. Esto facilita la comunicación entre el usuario y las distintas herramientas del entorno de desarrollo de programas, así como entre dichas herramientas. Finalmente, se presenta un esquema de validación de aserciones que combina la comprobación en tiempo de ejecución y la verificación en tiempo de compilación mediante el uso de la información de análisis