Genercion de codigo intermedio

Solo disponible en BuenasTareas
  • Páginas : 6 (1330 palabras )
  • Descarga(s) : 4
  • Publicado : 6 de diciembre de 2009
Leer documento completo
Vista previa del texto
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 con un Grafo Dirigido Acíclico (GDA). Lanotación postfija es una manera linealizada de representar un árbol sintáctico

Lenguajes intermedios

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ódigo original para facilitar la traducción hacia el código final. Otros lenguajesintermedios sirven de base o 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.

En sistemas basados en Unix, también ocurre algo similar generándose un archivo .o y el ejecutable a.out. Otros lenguajesintermedios famosos son los generados para la máquina virtual de Java el bytecode; y para la máquina virtual de .NET el MISL para luego ejecutarse en tiempo de ejecución JIT (Just in Time)

Otros lenguajes intermedios se utilizan en sistemas distribuidos como RPC, CORBA y su IDL, etc. En este caso estos lenguajes intermedios se encargan de enmascarar toda la heterogeneidad de las comunicacionesdistribuidas en una computadora

Notaciones

Las notaciones sirven de base para expresar sentencias bien definidas. El uso más extendido de las notaciones sirve para expresar operaciones aritméticas. Las expresiones aritméticas se pueden expresar de tres formas distintas: infija, prefija y postfija. La diversidad de notaciones corresponde en que para algunos casos es más sencillo untipo de notación. Las notaciones también dependen de cómo se recorrerá el árbol sintáctico, el cual puede ser en inorden, preorden o postorden; teniendo una relación de uno a uno con la notación de los operadores.

Infija

La notación infija es la más utilizada por los humanos por que es la más comprensible ya que ponen el operador entre los dos operandos. Por ejemplo a+b-5. No existeuna estructura simple para representar este tipo de notación en la computadora por esta razón se utilizan otras notaciones.

Postfija

La notación postfija pone el operador al final de los dos operandos, por lo que la expresión queda: ab+5-. La notación postfija utiliza una estructura del tipo LIFO (Last In First Out) pila, la cual es la más utilizada para la implementación.Prefija

La notación prefija pone el operador primero que los dos operandos, por lo que la expresión anterior queda: +ab-5. Esto se representa con una estructura del tipo FIFO (First In First Out) o cola. Las estructuras FIFO son ampliamente utilizadas pero tienen problemas con el anidamiento aritmético.

Representación de código intermedio

Existen maneras formales pararepresentar 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

Notación Polaca

La notación polaca es la originada por un Autómata con pila, en la que los operadores siempre preceden a los operandos sobre los que actúan, y que tiene la ventaja de no necesitar paréntesis:Estándar Ejemplo 1: 2 * ( 3 + 5 )

Ejemplo 2: 2 * 3 + 5

Polaca Ejemplo 1: * 2 + 3 5

Ejemplo 2: + * 2 3 5

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....
tracking img