Generacion de codigo

Solo disponible en BuenasTareas
  • Páginas : 5 (1165 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de agosto de 2012
Leer documento completo
Vista previa del texto
GENERACION DE CODIGO

6.1 Generador de código intermedio

La administración de la memoria se da en esta etapa.
Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas.
Los lenguajes intermedios generalmente tienen árboles de derivación más pequeños que su contraparte original.
Se puede representar un árbol sintáctico común Grafo Dirigido Asíclicó (GDA).

La notación postfija es una manera linealizada de representar un árbol sintáctico.

a := b*-c+b*-c
abc -*bc -*+=
x := y op z
x+y*z
t1:=y*z
t2:=x+t1

Los lenguajes intermedios nos sirven para representar la producción final de nuestro lenguaje fuente.
Existen muchos lenguajes intermedios, la mayoría de ellos son una representación más simplificada del códigooriginal para facilitar la traducción hacia el código final.

Otros lenguajes intermedios sirven de base como representación parcial de otros procesos. Por ejemplo al compilar un programa en C en Windows o DOS, se produce un código objeto con extensión .obj para que posteriormente el enlazador cree finalmente el código ejecutable .exe

6.2 Representación de código intermedio

Existenmaneras formales para representar código intermedio.
Estas notaciones simplifican la traducción de nuestro código fuente a nuestro código objeto ya que ahorran y acotan símbolos de la tabla de símbolos

6.2.1 Notación Polaca

La notación polaca, también conocida como notación de prefijo o notación prefija, es una forma de notación para la lógica, la aritmética, y el álgebra.
Su característicadistintiva es que coloca los operadores a la izquierda de sus operandos.
Si la aridad de los operadores es fija, el resultado es una sintaxis que carece de paréntesis u otros signos de agrupación, y todavía puede ser analizada sin ambigüedad.
El lógico polaco Jan Łukasiewicz inventó esta notación alrededor de 1920 para simplificar la lógica proposicional.



+3 4
Notaciónpolaca.

6.2.2 Código P

El código P hace referencia a máquinas que utilizan o se auxilian de pilas para generar código objeto.
En muchos caso la P se asociado a código portable el cual garantiza que el código compilado en una máquina se pueda ejecutar en otras.

Para garantizar la portabilidad del código se necesita que el lenguaje este estandarizado por algún instituto y que dichocódigo no tenga extensiones particulares.

6.2.3 Triplos

Las proposiciones de tres direcciones se parecen mucho al ensamblador, el cual es un lenguaje intermedio más entendible para la máquina.
Las estructuras de control (if, switch, while,do-while, for) son realmente etiquetas goto disfrazadas.

El problema de utilizar cuádruplos radica en que se tienen que colocar los valores temporalesen la tabla de símbolo.

Cuando se utilizan triples se ocupan punteros a la misma estructura de los triples.

* b t1 t2 //cuádruplos

* b (0) //triple

6.2.4 Cuádruplos

Es una estructura tipo registro con cuatros campos que se llaman: op, arg1, arg2 y resultado.
OP tiene un código intermedio.

Los operadores unarios como x:=-y no utilizan arg2. Generalmente arg1, arg2 yresultado son valores de tipo puntero y apuntan a una entrada en la tabla de símbolos
.

6.3 Esquemas de generación

Los esquemas de generación son las estrategias o acciones que se deberán realizarse y tomarse en cuenta en el momento de generar código intermedio.

Los esquemas de generación dependen de cada lenguaje. Tomaremos algunos esquemas de generación del lenguaje C.

6.3.1Expresiones

Para generar expresiones estas deben representarse de manera más simple y más literal para que su conversión sea más rápida.

Por ejemplo la traducción de operaciones aritméticas debe especificarse una por una,de tal forma que una expresión sea lo más mínimo posible

6.3.2 Declaración de variables, constantes

Las declaraciones de variables y constantes deben separarse de tal...
tracking img