Ing Sistemas Computacionales

Solo disponible en BuenasTareas
  • Páginas : 5 (1230 palabras )
  • Descarga(s) : 0
  • Publicado : 5 de octubre de 2012
Leer documento completo
Vista previa del texto
GENERACIÓN DE CÓDIGO INTERMEDIO

Esta fase del compilador no es en realidad una parte separada del compilador, la mayoría de los compiladores generan código como parte del proceso de análisis sintáctico, esto es debido a que requieren del árbol de sintaxis y si este no va a ser construido físicamente, entonces deberá acompañar al analizador sintáctico al barrer el árbol implícito. En lugar degenerar código ensamblador directamente, los compiladores generan un código intermedio que es más parecido al código ensamblador, las operaciones por ejemplo nunca se hacen con más de dos operados

La tarea de síntesis suele comenzar generando un código intermedio. El código intermedio no es el lenguaje de programación de ninguna máquina real, sino que corresponde a una máquina abstracta, que sedebe de definir lo más general posible, de forma que sea posible traducir este código intermedio a cualquier máquina real. El objetivo del código intermedio es reducir el número de programas necesarios para construir traductores, y permitir más fácilmente la transportabilidad de unas máquinas a otras.

Formas de código intermedio:
CÓDIGO DE TRES DIREC CIONES
x:=y op z
No se permite ningunaexpresión aritmética compuesta, pues solo hay operadores del lado derecho de la proposición.
Expresiones compuestas se descomponen en una secuencia generando elementos temporales.

NOTACIÓN POSTFIJA
La notación postfija pone el operador al final de los dos operados







4

Cuádruplas
Una cuádrupla es una estructura tipo registro con cuatro campos que se llaman (op, result,arg1, arg2). El campo op contiene un código interno para el operador.
Por ejemplo, la proposición de tres direcciones x = y + z se podría representar mediante la cuádrupla (ADD, x,y, z). Las proposiciones con operadores unarios no usan el arg2. Los campos que no se usan se dejan vacíos o un valor NULL. Como se necesitan cuatro campos se le llama representación mediante cuádruplas.

TripletasPara evitar tener que introducir nombres temporales en la tabla de símbolos, se hace referencia a un valor temporal según la posición de la proposición que lo calcula. Las propias instrucciones representan el valor del nombre temporal. La implementación se hace mediante registros de solo tres campos (op, arg1,arg2).

En la notación de tripletes se necesita menor espacio y el compilador nonecesita generar los
nombres temporales. Sin embargo, en esta notación, trasladar una proposición que defina un valor temporal exige que se modifiquen todas las referencias a esa proposición. Lo cual supone un inconveniente a la hora de optimizar el código, pues a menudo es necesario cambiar proposiciones de lugar.

Una forma de solucionar esto consiste en listar las posiciones a las tripletas enlugar de listar las tripletas mismas. De esta manera, un optimizador podría mover una instrucción reordenando la lista, sin tener que mover las tripletas en sí.

NOTACION PREFIJA O POLACA
Es una forma de notación para la lógica, la aritmética, y el álgebra. Su característica distintiva es que coloca los operadores a la izquierda de sus operados sus características principales son:
-Los operadosconservan 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 operados.
-Se evalúa la expresión binaria y el resultado se cambia como un nuevo operando. Se repite este hasta que nosquede un solo resultado.

• +A B C (A+B)*C

5
Evaluación de expresiones
Las expresiones son secuencias de constantes y/o variables separadas por operadores válidos. Se puede construir una expresión válida por medio de:
1. Una sola constante o variable, la cual puede estar precedida por un signo + ó - .
2. Una secuencia de términos (constantes, variables, funciones) separados por...
tracking img