viernes, 17 de julio de 2009

GENERADORES DE CODIGO INTERMEDIO

UNIDAD 6
LENGUAJES INTERMEDIOS
Es una representación más abstracta y uniforme que un lenguaje máquina concreto. Su misión es descomponer las expresiones complejas en binarias y las sentencias complejas en sentencias simples. Ventajas: • Permite una fase de análisis (análisis semántico) independiente de la máquina. • Se pueden realizar optimizaciones sobre el código intermedio (Las complejas rutinas de optimización son independientes de la máquina). Desventajas: • Pérdida de eficiencia (no permite una compilación de una sola pasada). • Introduce en el compilador una nueva fase de traducción.
Tipos de lenguajes intermedios: • Árbol sintáctico. • Árbol sintáctico abstracto. 􀂾 Todos los nodos del árbol representan símbolos terminales. 􀂾 Los nodos hijos son operandos y los nodos internos son operadores. • Grafo dirigido acíclico (GDA). • Notación posfija. • Definición de una máquina abstracta. • N-tupla: 􀂾 Cada sentencia del lenguaje intermedio consta de N elementos: (Operador, Operando1, Operando2, … , Operando N?−1) 􀂾 Los más usuales son los tercetos (tripletas) y los cuartetos (cuádruplas), llamados también código de tres direcciones.
NOTACIONES
LaS NOTACIONES SON UNA FORMA ESPECIAL EN LA QUE se pueden expresar una expresion matematica y puedan ser de 3 formas: infija,prefija y posfija.
NOTACION PREFIJA
La Expresión o Notación PreFija nos indica que el operador va antes de los operandos sus características principales son:
-Los operandos conservan el mismo orden que la notación infija equivalente.
-No requiere de paréntesis para indicar el orden de precedencia de operadores ya que el es una operación.
-Se evalúa de izquierda a derecha hasta que encontrémosle primer operador seguido inmediatamente de un par de operandos.
-Se evalúa la expresión binaria y el resultado se cambia como un nuevo operando. Se repite este hasta que nos quede un solo resultado.
NOTACION POSFIJA

Como su nombre lo indica se refiere a que el operador ocupa la posición después de los operandos sus características principales son:
-El orden de los operandos se conserva igual que la expresión infija equivalente no utiliza paréntesis ya que no es una operación ambigua.
-La operación posfija no es exactamente lo inverso a la operación prefija equivalente:
(A+B)*C AB+
NOTACION INFIJA
La Expresión o Notación InFija es la forma mas común que utilizamos para escribir expresiones matemáticas, estas notaciones se refiere a que el operador esta entre los operandos. La notación infija puede estar completamente parentizada o puede basarse en un esquema de precedencia de operadores así como el uso de paréntesis para invalidar los arreglos al expresar el orden de evaluación de una expresión: 3*4=12 3*4+2=12
ESQUEMAS DE GENERACION
Cuando una empresa desarrolla un compilador para un lenguaje fuente y un lenguaje objeto determinados, normalmente no es el único compilador que la empresa piensa desarrollar; es más muchos fabricantes de microprocesadores tienen una división de dedicada a desarrollar compiladores para los nuevos chips que construya.
Cuando el número de lenguaje fuente crece hasta un número grande M, y/o cuando el número de lenguajes objeto también crece hasta un número grande N, es necesario encontrar una técnica para evitar tener que diseñar M x N compiladores. La solución consiste en utilizar un lenguaje intermedio o una representación intermedia; de esta forma sólo hay que construir M programas que traduzcan de cada lenguaje fuente al lenguaje intermedio (los front ende), y N programas que traduzcan del lenguaje intermedio a cada lenguaje objeto (los back end).
No existe un único lenguaje intermedio en todos los compiladores, sino que cada empresa que diseña compiladores suele tener su propio lenguaje intermedio. La utilización de un lenguaje intermedio permite construir en, mucho menos tiempo un compilador para otra máquina y también permite construir compiladores para otros lenguajes fuente generando códigos para la misma máquina. La matemática es un arte, pero también una ciencia de estudio. Informalmente, se puede decir que es el estudio de los “números y símbolos”. Es decir, es la investigación de estructuras abstractas definidas a partir de axiomas, utilizando la lógica y la notación matemática. Es también la ciencia de las relaciones espaciales y cuantitativas. Se trata de relaciones exactas que existen entre cantidades y magnitudes, y de los métodos por los cuales, de acuerdo con estas relaciones, las cantidades buscadas son deducibles a partir de otras cantidades conocidas o presupuestas.
Por ejemplo, el compilador de C de GNU que se distribuye con Linux es una versión de una familia de compiladores de C para diferentes máquinas o sistemas operativos: Alpha, AIX, Sun, HP, MS-DOS, etc.. Además, GNU ha desarrollado un compilador de FORTRAN y otro de Pascal que, al utilizar el mismo lenguaje intermedio, pueden ser portados a todos los sistemas y máquinas en las que y a existe un compilador de C de GNU con relativamente poco esfuerzo.

1 comentario: