6.0 INTEGRACIÓN DEL INTERPRETE











6.0 INTEGRACIÓN DEL INTERPRETE



6.1 Lenguaje intermedio




Un lenguaje intermedio es el lenguaje de una máquina abstracta diseñada para ayudar a realizar el análisis de un programa informático. El término proviene de su uso en compiladores, donde el código fuente de un programa es traducido a un modo más apropiado para transformaciones de mejora de código antes de generar el código objeto o código máquina para una máquina determinada. El diseño del lenguaje intermedio difiere típicamente del lenguaje de máquina de tres maneras fundamentales:

Cada instrucción representa exactamente una operación fundamental; por ejemplo, los modos de direccionamiento "shift-add" (desplazar y añadir) comunes en microprocesadores no están presentes.

La información de la estructura de control puede no estar incluida en el juego de instrucciones.

El número de registros disponibles puede ser grande, incluso ilimitado.



Representación intermedia


Una representación intermedia (RI) es una estructura de datos creada a partir de los datos de entrada de un programa informático y de la que parte o la totalidad de los datos de salida son construidos por turno. El uso del término suele implicar que la mayoría de la información presente en la entrada es guardada por la representación intermedia junto con más anotaciones o características de búsqueda rápida.


Un ejemplo canónico se encuentra en la mayoría de compiladores modernos, donde el texto linear entendible por los humanos es transformado en un grafo que permite el análisis del flujo de datos y recolocaciones antes de empezar a crear la lista de instrucciones del CPU que harán el trabajo. El uso de una representación intermedia permite a sistemas de compiladores como GNU GCC y LLVM poder tener como destino diferentes códigos fuente y admiten su generación para diferentes tipos de arquitectura.







6.2. Construcción del intérprete



La compilación consiste en tomar los ficheros fuente que conforman un programa y, línea por línea, traducir cada instrucción de alto nivel por varias instrucciones en código máquina que realicen lo que la instrucción de alto nivel expresa.

Si se repite esa traducción para todas las líneas del código fuente, obtendremos un conjunto de instrucciones máquina. Grabando esas instrucciones máquina en un fichero que contiene una estructura interna que un determinado sistema operativo es capaz de entender, obtenemos un fichero binario ejecutable, o simplemente, "un ejecutable".

El encargado de realizar esta traducción es un tipo de programa llamado compilador. En su funcionamiento más básico, un compilador acepta uno o más ficheros fuente y si no contienen errores sintácticos produce un fichero binario ejecutable, que un sistema operativo será capaz de cargar en memoria principal y pedir a la CPU que lo ejecute.

A menudo se compara a un compilador con un traductor de idiomas. Imagina un libro escrito en inglés. Para publicar su versión en español, una persona que conoce las reglas de los dos idiomas y dispone de la técnica para expresarse en ambos va leyendo el libro en inglés frase a frase y va escribiendo su equivalente en español.





Comentarios