Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

Implementación de un lenguaje imperativo simplificado

Enviado por   •  31 de Mayo de 2023  •  Trabajo  •  914 Palabras (4 Páginas)  •  244 Visitas

Página 1 de 4

Tema 4. Implementación de un lenguaje imperativo simplificado

Los compiladores de un pasada permiten la generación de código al mismo tiempo que se realiza la construcción del árbol sintáctico y se comprueban las restricciones contextuales

Compiladores de un solo paso: Fase de análisis

  • Una misma representación intermedia del árbol sintáctico y tabla de símbolos se puede traducir a distintos códigos objeto intermedios en función de las características del tipo de máquina abstracta que vaya a evaluar las instrucciones
  • La mayoría de los compiladores transforman el programa fuente en algún tipo de representación intermedia, para luego convertir esa representación en otra mas eficiente o en el código final

  • Representaciones intermedias

Ventajas:

  1. Independizar el front-end del back-end, con lo que eso supone en cuanto a modularidad y a posibilidades para compilaciones cruzadas
  2. Mayor nivel de abstracción
  3. Posibilidad de realizar optimizaciones
  • Las representaciones intermedias afectan tanto a la velocidad como la eficiencia del compilador

Traducido quiere decir:

  1. Mayor modularidad, ya que aísla elementos de más alto nivel de los dependientes de la máquina
  2. Facilita optimización y generación de código
  1. Elimina/simplifica características específicas de la máquina objetivo
  2. Permite optimizaciones independientes de la máquina
  3. Ofrece representación simple y uniforme fácil .
  1. Ofrece una mayor portabilidad
  1. Independencia de la máquina objetivo y del lenguaje fuente
  2. Análisis no depende de arquitectura destino
  3. Generación de código no depende del lenguaje original
  4. Crear un compilador para otra máquina basta con crear una nueva etapa final de generación

Inconvenientes

  1. Necesidad de una fase extra para traducir a código máquina
  1. Mayor coste computacional
  2. Dificultad para definir un lenguaje intermedio adecuado
  1. Compromiso entre la representación de elementos código fuente y del código máquina

Tabla de símbolos. Restricciones contextuales

La tabla de símbolos es una estructura fundamental durante todas las etapas del compilador. Sirve como base de datos temporal y almacena todos los atributos asociados a los lexemas del código de entrada,los cuales harán falta durante la compilación

La incorporación de atributos a la tabla de símbolos es realizada por las distintas fases del compilador ( léxica, sintáctica y semántica ).

Los atributos asociados a clases de tokens diferentes pueden ser distintos puesto que el propósito y semántica de ellos también lo son.

Las tablas de símbolos generalmente se manejan como estructuras globales disponibles en cualquier fase del compilador

Representaciones intermedias: tipos

Las representaciones intermedias se diferencian en lo más o menos cercanas que estén del código máquina o del lenguaje fuente

  • RI de alto nivel:  Preservan información como la de los bucles y las sentencias if-then-else. Reflejan el lenguaje fuente que están compilando
  • RI de nivel medio: Son independientes tanto de la estructura del lenguaje. Fuente como del micro para el que se están compilando
  • RI de bajo nivel: Se acercan a la arquitectura “objetivo”: dependen mucho de la máquina, aunque no llegan a ser código ensamblador

Lo normal es que un compilador comience generando una RI de alto nivel, optimice, traduzca esa RI en otra de nivel medio, optimice de nuevo, y finalmente genere otra RI de bajo nivel para una última ronda de optimizaciones. Todo esto se realiza antes de generar el código final.

Representación intermedia

Es una estructura de datos que representa al programa fuente durante el proceso de su traducción a código objeto. Este tipo de código abstracto y virtual debería reunir las siguientes características:

...

Descargar como  txt (6.2 Kb)   pdf (74.8 Kb)   docx (198.8 Kb)  
Leer 3 páginas más »
Disponible sólo en Essays.club