03-Practica3 RA
03-Practica3 RA
03-Practica3 RA
Práctica 3
Binding - Registros de Activación
Clasificación de Variables
Apuntes
Clase 6-Binding y Registros de Activación
Clase 7-Clasificación de Variables
BINDING
1. Clasifique en semántica, pragmática y sintáctica cada una de las siguientes afirmaciones:
var1 = 205
var2 = 10
var3 = 1024
var2 = 205
var1= “diez”
a) ¿Qué puede deducir del lenguaje en que se han escrito las instrucciones anteriores?
b) ¿Qué ocurre si se ejecuta var1 = var2 + var3 ?
3. El siguiente programa:
Y=0
X=0
Z = 255
REPEAT
Z= Z-1
UNTIL (Z<0)
Z= 255
Y= 0
X= 0
REPEAT
Z= Z-1
UNTIL (Z<0)
Página 1 de 5
Lenguajes y Compiladores - UNLaM 2017
Práctica 3
Binding - Registros de Activación
Clasificación de Variables
Prog A
var a: integer
Prog B
var b: integer
Prog C
var c,d: integer
--------------------------------------- (1)
Prog D
var d: integer
----------------------------- (2)
Prog E
-
End E
-
End D
-
End C
-
End B
Prog F
var f: float
------------------------------------------------- (3)
Prog H
-
End H
-
End F
Prog G
Prog I
var I: float
------------------------------------ (4)
Prog J
-
End J
-
End I
-
End G
-
End A
Página 2 de 5
Lenguajes y Compiladores - UNLaM 2017
Práctica 3
Binding - Registros de Activación
Clasificación de Variables
F
C I
D E K
¿ Cuáles de las siguientes secuencias son posibles y cuáles no?. Marcar el llamado incorrecto en los casos que
corresponda.
En todas las secuencias construir la pila de ejecución incluyendo la cadena estática.
a) A B J A C G A D E
b) A D E C G G E
c) A C D D E E K
d) A C H H C A
e) A B J C G F I F
f) A B F I I G H H
program main
var a,y,c : integer;
procedure sub1;
var x,y,z : integer;
begin {sub1}
..
end {sub1}
procedure sub2
var c,x,w: integer;
procedure sub3;
var a,d,z: integer;
begin {sub3}
..
end {sub3}
begin {sub2}
..
end {sub2}
begin {main}
..
end {main}
Página 3 de 5
Lenguajes y Compiladores - UNLaM 2017
Práctica 3
Binding - Registros de Activación
Clasificación de Variables
Se deben listar todos los nombre de los identificadores, junto al procedimiento correspondiente donde fueron
declarados, que se encuentran visibles en los cuerpos de sub1, sub2 y sub3.
procedure main
var c,d: integer
procedure sub1
var a,b: integer;
{---------------------------------(1)
......
call sub3;
}
procedure sub2
var b,c: integer;
{---------------------------------(2)
......
call sub1;
......
}
procedure sub3
var b: integer;
procedure sub4
var d: integer;
{------------------------- (3)
d:=b+a;
}
{---------------------------------(4)
.........
call sub4;
}
{--------------------------------------(5)
........
call sub2;
}
Asumiendo alcance estático, mencionar qué variables son visibles en cada punto del programa.
Página 4 de 5
Lenguajes y Compiladores - UNLaM 2017
Práctica 3
Binding - Registros de Activación
Clasificación de Variables
Indicar cuál de los siguientes árboles de anidamiento corresponden a la tabla, especificando para el/los
correspondientes: llamados recursivos, llamados locales y llamados globales con la distancia correspondiente.
a) A b) c)
W A
B W
A B B W
Y Z
Z Y Y Z
D C
D C E D E C
CLASIFICACION DE VARIABLES
a) ¿Cuáles de los números 7, 45, 9 y 22 deben almacenarse en el registro de activación? ¿En qué otro
lugar puede almacenarse?
b) Ídem si la variable es semidinámica.
11. Sea la matriz del ejercicio anterior. Si cada entero ocupa dos bytes y el comienzo de Z se
encuentra en la dirección 3506C, qué componente se encuentra almacenado en la dirección
350B2.
12. Indique si las siguientes afirmaciones son verdaderas o falsas. Explicar por qué.
a) El tiempo de vida de una variable declarada en un programa en lenguaje Pascal, sin llamadas a
procedimientos ni funciones, coincide siempre con su alcance.
b) Una variable declarada en C ó C++ como static posee almacenamiento y alcance estáticos.
c) Si una variable definida en el interior de un bloque de “C” {} contiene una inicialización, por ejemplo, int
x = 3; la misma se ejecuta cada vez que comienza el bloque.
g) ADA y Algol conocen los límites de todos sus vectores en tiempo de compilación.
Página 5 de 5