Programacion de sistemas

Solo disponible en BuenasTareas
  • Páginas : 13 (3250 palabras )
  • Descarga(s) : 39
  • Publicado : 3 de junio de 2010
Leer documento completo
Vista previa del texto
UNIDAD 6: GENERACION DE CODIGO INTERMEDIO

Después de los análisis sintáctico y semántico, algunos compiladores generan una representación intermedia explícita del programa fuente. Se puede considerar esta representación intermedia como un programa para una máquina abstracta. Esta representación intermedia debe tener dos propiedades importantes; debe ser fácil de producir y fácil de traducir alprograma objeto. La representación intermedia puede tener diversas formas. Existe una forma intermedia llamada “código de tres direcciones” que es como el lenguaje ensamblador de una máquina en la que cada posición de memoria puede actuar como un registro. El código de tres direcciones consiste en una secuencia de instrucciones, cada una de las cuales tiene como máximo tres operandos.Primera.- Cada instrucción de tres direcciones tiene a lo sumo un operador, además de la asignación, por tanto, cuando se generan estas instrucciones, el traductor tiene que decidir el orden en que deben efectuarse las operaciones.
Segunda.- El traductor debe generar un nombre temporal para guardar los valores calculados por cada instrucción.
Tercera.- Algunas instrucciones de “tres direcciones”tienen menos de tres operandos, por ejemplo, la asignación.
6.1 Lenguajes intermedios
Tipo 1
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 puedenrealizar 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.
Tipo 2
Tipos de lenguajes intermedios:
• Árbol sintáctico.
• Árbol sintáctico abstracto. Todos los nodos del árbolrepresentan 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.

Tipo 3
Tripletas un ejemplo seria:
d = a + b * c [1] (*, b, c) [2] (+, a, [1]) [3] (=, d, [2]) , ,
Cuartetos un ejemplo seria:
d = a + b * c (*, b, c, temp1) (+, a, temp1, temp2) (=, temp2, —, d)
6.2 Notaciones

Forma especial en la que se pueden expresar una expresión matemática en tres formas: Infija, Prefija y Posfija.

6.2.1 InfijaLa notación habitual. El orden es primer operando,operador, segundo operando. Es la forma más común que utilizamos para escribir expresiones matemáticas, estas notaciones se refiere a que el operador está 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 losarreglos al expresar el orden de evaluación de una expresión:

3*4=12
3*4+2=14
3*(4+2)=18
[size=12]

6.2.2 Posfija

El orden es primer operando, segundo operando, operador. 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 noutiliza 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+C*
6.2.3 Prefija:

El orden es operador, primer operando, segundo. 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....
tracking img