PDF de programación - Procesadores de Lenguajes - Tema 7. Compilación de subprogramas

Imágen de pdf Procesadores de Lenguajes - Tema 7. Compilación de subprogramas

Procesadores de Lenguajes - Tema 7. Compilación de subprogramasgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 20 de Noviembre del 2017)
649 visualizaciones desde el 20 de Noviembre del 2017
335,0 KB
23 paginas
Creado hace 19a (17/05/2004)
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA

Escuela Técnica Superior de Ingeniería Informática

Procesadores de Lenguajes

Tema 7
Tema 7

El entorno de Ejecución
El entorno de Ejecución

Compilación de subprogramas
Compilación de subprogramas

Javier Vélez Reyes
[email protected]

Javier Vélez Reyes [email protected]

Objetivos del Tema
Objetivos del Tema

Estudiar el entorno de ejecución
(cid:132)(cid:132) Estudiar el entorno de ejecución
¿Qué es el entorno de ejecución?
(cid:132)(cid:132) ¿Qué es el entorno de ejecución?
¿Qué estructura tiene?
(cid:132)(cid:132) ¿Qué estructura tiene?
¿Para qué se utiliza?
(cid:132)(cid:132) ¿Para qué se utiliza?
Aprender a gestionarlo para subprogramas
(cid:132)(cid:132) Aprender a gestionarlo para subprogramas
Funciones no recursivas
(cid:132)(cid:132) Funciones no recursivas
Funciones recursivas directas e indirectas
(cid:132)(cid:132) Funciones recursivas directas e indirectas
Funciones locales
(cid:132)(cid:132) Funciones locales

1

Javier Vélez Reyes [email protected]

Índice General
Índice General

Introducción
(cid:132)(cid:132) Introducción
El entorno de ejecución
(cid:132)(cid:132) El entorno de ejecución
Registro de activación
(cid:132)(cid:132) Registro de activación
Secuencia de llamada y retorno
(cid:132)(cid:132) Secuencia de llamada y retorno
Comprobaciones semánticas
(cid:132)(cid:132) Comprobaciones semánticas
Implementación con m2r
(cid:132)(cid:132) Implementación con m2r
Gestión de tabla de tipos
(cid:132)(cid:132) Gestión de tabla de tipos
Gestión de la tabla de símbolos
(cid:132)(cid:132) Gestión de la tabla de símbolos
Funciones sin recursividad
(cid:132)(cid:132) Funciones sin recursividad
Compilación del cuerpo de la función
(cid:132)(cid:132) Compilación del cuerpo de la función
Compilación de la llamada a la función
(cid:132)(cid:132) Compilación de la llamada a la función

Javier Vélez Reyes [email protected]

Índice General
Índice General

Funciones con recursividad
(cid:132)(cid:132) Funciones con recursividad
Compilación del cuerpo de la función
(cid:132)(cid:132) Compilación del cuerpo de la función
Compilación de instrucciones
(cid:132)(cid:132) Compilación de instrucciones
Compilación de la llamada a la función
(cid:132)(cid:132) Compilación de la llamada a la función
Funciones locales
(cid:132)(cid:132) Funciones locales
Encadenamiento de accesos
(cid:132)(cid:132) Encadenamiento de accesos
Display
(cid:132)(cid:132) Display
Paso de parámetros
(cid:132)(cid:132) Paso de parámetros

2

Javier Vélez Reyes [email protected]

El entorno de ejecución
(cid:132)(cid:132) El entorno de ejecución

Introducción
Introducción

El entorno de ejecución viene dado por la estructura de memoria
El entorno de ejecución viene dado por la estructura de memoria
incluidos los registros de la unidad central de proceso y la forma
incluidos los registros de la unidad central de proceso y la forma
de gestionarla que permite desarrollar adecuadamente el proceso
de gestionarla que permite desarrollar adecuadamente el proceso
de ejecución de un programa
de ejecución de un programa

Condiciona
(cid:132)(cid:132) Condiciona
La gestión de memoria dinámica
(cid:132)(cid:132) La gestión de memoria dinámica
La implementación de ámbitos
(cid:132)(cid:132) La implementación de ámbitos
La gestión de funciones y procedimientos
(cid:132)(cid:132) La gestión de funciones y procedimientos

Javier Vélez Reyes [email protected]

El entorno de ejecución
El entorno de ejecución

2 zonas del entorno de ejecución
(cid:132)(cid:132) 2 zonas del entorno de ejecución
Zona de código
(cid:132)(cid:132) Zona de código
Contiene el código del programa
(cid:132)(cid:132) Contiene el código del programa
Contiene variables globales y estáticas
(cid:132)(cid:132) Contiene variables globales y estáticas
Permanece inalterada durante la ejecución
(cid:132)(cid:132) Permanece inalterada durante la ejecución
Es posible direccionar cada instrucción en compilación
(cid:132)(cid:132) Es posible direccionar cada instrucción en compilación
Zona de datos
(cid:132)(cid:132) Zona de datos
Contiene variables locales
(cid:132)(cid:132) Contiene variables locales
Mantiene información para gestionar funciones recursivas
(cid:132)(cid:132) Mantiene información para gestionar funciones recursivas
Contiene espacio para datos dinámicos (malloc)
(cid:132)(cid:132) Contiene espacio para datos dinámicos (malloc)
No hay relación biunívoca entre variables y direcciones
(cid:132)(cid:132) No hay relación biunívoca entre variables y direcciones

3

Javier Vélez Reyes [email protected]

El entorno de ejecución
El entorno de ejecución

Tipos de entornos de ejecución
(cid:132)(cid:132) Tipos de entornos de ejecución
Completamente estáticos
(cid:132)(cid:132) Completamente estáticos
La dirección de cada dato es conocida en compilación
(cid:132)(cid:132) La dirección de cada dato es conocida en compilación
No existe recursividad, variables locales, memoria dinámica
(cid:132)(cid:132) No existe recursividad, variables locales, memoria dinámica
Fortran 77
(cid:132)(cid:132) Fortran 77
Basados en pila
(cid:132)(cid:132) Basados en pila
Los datos se almacenan en una pila
(cid:132)(cid:132) Los datos se almacenan en una pila
Permite recursividad, variables locales, memoria dinámica
(cid:132)(cid:132) Permite recursividad, variables locales, memoria dinámica
El código es conocido en tiempo de compilación
(cid:132)(cid:132) El código es conocido en tiempo de compilación
C/C++, Pascal, Ada
(cid:132)(cid:132) C/C++, Pascal, Ada
Completamente dinámicos
(cid:132)(cid:132) Completamente dinámicos
Código y datos pueden modificarse en ejecución
(cid:132)(cid:132) Código y datos pueden modificarse en ejecución
Permite generar y modificar funciones
(cid:132)(cid:132) Permite generar y modificar funciones
Lisp, Prolog
(cid:132)(cid:132) Lisp, Prolog

Javier Vélez Reyes [email protected]

Registro de activación
Registro de activación
Registro de activación RA contiene datos de función
(cid:132)(cid:132) Registro de activación RA contiene datos de función
Parámetros de la función
(cid:132)(cid:132) Parámetros de la función
Variables locales y temporales
(cid:132)(cid:132) Variables locales y temporales
El valor devuelto
(cid:132)(cid:132) El valor devuelto
Dirección de retorno
(cid:132)(cid:132) Dirección de retorno
(cid:132)(cid:132) ……
Se almacena en
(cid:132)(cid:132) Se almacena en
Área estática en Fortran 77
(cid:132)(cid:132) Área estática en Fortran 77
Pila en C/C++, Pascal o Ada
(cid:132)(cid:132) Pila en C/C++, Pascal o Ada
Montículo en Lisp
(cid:132)(cid:132) Montículo en Lisp

valor retorno
valor retorno
dirección retorno
dirección retorno

Datos temporales
Datos temporales

parámetros
parámetros

Datos locales
Datos locales

4

Javier Vélez Reyes [email protected]

Secuencias de llamadas y retorno
Secuencias de llamadas y retorno

Llamar una función implica
(cid:132)(cid:132) Llamar una función implica
Una secuencia de llamada
(cid:132)(cid:132) Una secuencia de llamada
Ejecutar la función
(cid:132)(cid:132) Ejecutar la función
Una secuencia de retorno
(cid:132)(cid:132) Una secuencia de retorno
Secuencia de llamada (Call sequence)
(cid:132)(cid:132) Secuencia de llamada (Call sequence)
Reserva de espacio para el RA
(cid:132)(cid:132) Reserva de espacio para el RA
Almacenamiento de la dirección de retorno
(cid:132)(cid:132) Almacenamiento de la dirección de retorno
Cálculo y almacenamiento de los parámetros actuales
(cid:132)(cid:132) Cálculo y almacenamiento de los parámetros actuales
Salvaguarda del estado de ejecución (registros)
(cid:132)(cid:132) Salvaguarda del estado de ejecución (registros)
Secuencia de retorno (return sequence)
(cid:132)(cid:132) Secuencia de retorno (return sequence)
Almacenar el valor devuelto por la función
(cid:132)(cid:132) Almacenar el valor devuelto por la función
Devolver el control al programa llamante
(cid:132)(cid:132) Devolver el control al programa llamante

Javier Vélez Reyes [email protected]

Comprobaciones semánticas
Comprobaciones semánticas
Al trabajar con funciones el ETDS debe comprobar
(cid:132)(cid:132) Al trabajar con funciones el ETDS debe comprobar
No se usan paréntesis con identificadores de variable
(cid:132)(cid:132) No se usan paréntesis con identificadores de variable
No se usan identificadores de funciones como variables
(cid:132)(cid:132) No se usan identificadores de funciones como variables
En una llamada debe coincidir
(cid:132)(cid:132) En una llamada debe coincidir
El número, tipo y orden de los parámetros formales
(cid:132)(cid:132) El número, tipo y orden de los parámetros formales
El número, tipo y orden de los parámetros actuales
(cid:132)(cid:132) El número, tipo y orden de los parámetros actuales
Realizar conversiones implícitas entre tipos compatibles
(cid:132)(cid:132) Realizar conversiones implícitas entre tipos compatibles

5

Javier Vélez Reyes [email protected]

Implementación con m2r
Implementación con m2r

Ejemplo
(cid:132)(cid:132) Ejemplo
Máquina virtual m2r
(cid:132)(cid:132) Máquina virtual m2r
Entorno de ejecución estático
(cid:132)(cid:132) Entorno de ejecución estático
Todos los datos ocupan una posición de memoria
(cid:132)(cid:132) Todos los datos ocupan una posición de memoria

int a;
int a;
int g1 () {
int g1 () {

return 10;
return 10;

}
}
int g2 (int a, int b) {
int g2 (int a, int b) {

int x, y, z;
int x, y, z;
return a*b;
return a*b;

}
}
main () {
main () {

a = g2(3,5);
a = g2(3,5);

}
}

L1:

L2:

L3:

jmp L3
jmp L3

Código de g1
Código de g1

Código de g2
Código de g2

Código de main
Código de main

100
101
102
103
104
105
106
107

Valor retorno
Valor retorno
Dirección retorno
Dirección retorno

Parámetro a
Parámetro a
Parámetro b
Parámetro b
Variable local x
Variable local x
Variable local y
Variable local y
Variable local z
Variable local z

Temporales locales
Temporales locales

Javier Vélez Reyes [email protected]

Implementación con m2r
Implementación con m2r

Ejemplo
(cid:132)(cid:132) Ejemplo
Código en el
  • Links de descarga
http://lwp-l.com/pdf7611

Comentarios de: Procesadores de Lenguajes - Tema 7. Compilación de subprogramas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad