Compi3

Páginas: 7 (1613 palabras) Publicado: 27 de junio de 2012
Compiladores

Tarea Preparatoria
3er Parcial

1. Código 3 direcciones
1. Apuntador P
2. Pila y Stack
3. Métodos
4. Objetos
5. Generación de c3d
2. Comprobación de Tipos
1. THIS
2. comprobaciones
3. Ejemplo Completo
Código 3 direcciones (c3d)
El apuntador P
la pila y el Stack, en la generación del código 3 direcciones, son tan importantes como la tabla de
símbolos.
En la pilase almacenaran todos los apuntadores de memoria (hacia el stack) de las variables, objetos,
etc etc.
En c3d se maneja la variable “p” como el apuntador a la pila. Esta puntero es importante para saber en
que ámbito se esta trabajando.
Por lo cual ahora “p” forma parte importante y obligatoria para la generación de c3d.
--Al inicio de un método (también el constructor) se debe poner laintroducción p=p+0;
La pila y el Stack
si bien “p” es el apuntador de la pila, todos los valores (o la mayoría) que la pila contiene son los
apuntadores al stack.
El stack es el espacio de memoria donde efectivamente se tiene la información completa del programa
en ejecución. A la pila solo se le delegaran los valores cuando se ejecute cierta parte del código la cual
siempre sera cargada desde elstack.
En resumen la pila tiene los procesos en ejecución mientras que el stack tiene todos los objetos del
programa que pueden ejecutarse en cierto momento.
Métodos:
los métodos en c3d, al igual que en alto nivel, son procesos que hacen alguna función. Estos pueden
devolver o no valores. Estos métodos también pueden recibir parámetros.
Existe un método especial que posee el mismo nombre queel de su clase, el constructor.
El código 3 direcciones por definición debe poder entender estos métodos.
A continuación se explica el como.
1. Parámetros.

1. Todo parámetro que tenga un método en c3d se traslada a ser una variable local que va justo
al inicio del código. Con la diferencia que estas ya tendrán valores asignados
por ejemplo el método “void x(int a)” en 3d se transfiere avoid x(); a;
2. La llamada a un método desde cualquier parte del programa se hace en 3 pasos
1. Asignar los valores de los parámetros(si los tiene)
2. Cambiar p a la posición de la primera variable del método
3. llamar al método.
3. Ejecución.
1. Se ejecuta el método en la pila. Y luego del sitio que se halla llamado se regresa p a la
ejecución normal
OBJETOS
los objetos en c3d en teoríason exactamente igual a los de alto nivel para que esto se cumpla se hace lo
siguiente.
1. La declaración de un objeto únicamente guarda una posición en la pila (o stack) de
donde se halla declarado.
2. La Instancia de dicho objeto reserva un espacio en la stack del mismo tamania que la
tabla de símbolos lo indique. En la posición de la pila donde se reservo para su
declaración. Se asignara elvalor que apunte a el sitio exacto de la stack.
3. Para accesar al objeto simplemente se usa el puntero de la pila para llegar al stack.
Dentro del stack se manejara esa porción de memoria como “otra pila”
Generación de Código 3 direcciones
Dado el siguiente ambiente mencionado (pila,stack,métodos.,objetos) la generación del código 3
direcciones difiere a lo visto previamente. Aunque mas quediferir se perfecciona y toma funcionalidad
real.
Si nos apegamos al paradigma actual, Programación Orientada a Objetos (POO), se puede inferir de
que en la pila únicamente existirán apuntadores a instancias de objetos que están alojados en el stack.
Incluso los MAIN, son parte de un objeto, es por eso que en java se define cual clase sera la principal
en su archivo manifest.
Así que lapila contendrá apuntadores y al momento de la ejecución de algo solo se busca la stack y ese
trozo de memoria funcionara como pila “virtual”.
Dado dicho análisis entonces al inicio la pila solo debería de tener la información del método “main”
de la clase principal.
Ahora bien. En la clase se ha manejado que el proceso principal de ejecución no forma parte de
ninguna clase. Que simplemente es...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS