Interpretación del Código Intermedio y administración de memoria
Enviado por crumac • 28 de Mayo de 2015 • Informe • 298 Palabras (2 Páginas) • 176 Visitas
Interpretación del Código Intermedio y administración de memoria
La interpretación de código intermedio permite realizar la función final del intérprete, la ejecución del programa. Para ello se tiene la tabla de código y la tabla de clases, productos finales de la fase de análisis (y de algunas de síntesis), que deberán interpretarse siguiendo las definiciones de las operaciones de código intermedio. Específicamente, se utilizan los siguientes parámetros, estructuras y espacios de memoria:
dx_clase: la clase actual que se está interpretando.
idx_metodo: el método actual de la clase que se está interpretando.
Memory: el espacio de memoria del “stack”
dir_init: la primera dirección libre en el “stack”.
cx: el contador del programa.
Sra: pila de registros de activación.
Ct: tabla de código.
O: lista de objetos.
H: “heap”.
Cl: tabla de clases.
La administración de memoria se realiza en base a los conceptos de “stack” y “heap”, en el primero se almacenan las variables locales de los métodos declarados y en el segundo se almacenan los valores de los atributos de los objetos instanciados. En tiempo de ejecución, el “heap” va creciendo conforme vaya avanzando el programa y es utilizado cuando se necesite conocer o guardar el valor de un atributo de un determinado objeto.
Al realizar la interpretación, el primer paso es la búsqueda de la clase Main y dentro de ella del método main en la tabla de clases. Si éste clase o método no ha sido definido entonces el programa no puede continuar. En caso contrario, se comienza a ejecutar un bucle que irá obteniendo cada instrucción en código intermedio de la tabla de código. El contador del programa (cx) tendrá como inicio la primera instrucción del método main de la clase Main, e irá cambiando en cada interpretación de un código intermedio hasta llegar a la última instrucción.
...