Beruflich Dokumente
Kultur Dokumente
- Part 2
Y.N. Srikant
Computer Science and Automation
Indian Institute of Science
Bangalore 560 012
NPTEL Course on Compiler Design
No stack/heap allocation; no
overheads
Ex: Fortran IV and Fortran 77
Variable access is fast since
addresses are known at compile
time
No recursion
Y.N. Srikant
Main program
variables
Procedure P1
variables
Procedure P2
variables
Procedure P4
variables
Main memory
3
Stack/heap allocation
Ex: C, C++, Java, Fortran 8/9
Variable access is slow (compared to static
allocation) since addresses are accessed through
the stack/heap pointer
Recursion can be implemened
Y.N. Srikant
program RTST;
procedure P;
procedure Q;
begin R; end
procedure R;
begin Q; end
begin R; end
begin P; end
Base
Static Link
Dynamic Link
RTST
DL chain
Next
program RTST;
procedure P;
procedure Q;
begin R; end
procedure R;
begin Q; end
begin R; end
begin P; end
Base
Static Link
Dynamic Link
RTST
DL chain
Static Link
Dynamic Link
P
Next
program RTST;
procedure P;
procedure Q;
begin R; end
procedure R;
begin Q; end
begin R; end
begin P; end
Static Link
Dynamic Link
RTST
DL chain
Static Link
Dynamic Link
P
Base
Static Link
Dynamic Link
R
Next
10
program RTST;
procedure P;
procedure Q;
begin R; end
procedure R;
begin Q; end
begin R; end
begin P; end
Static Link
Dynamic Link
RTST
DL chain
Static Link
Dynamic Link
P
Static Link
Dynamic Link
R
Base
Static Link
Dynamic Link
Q
Next
11
1 program RTST;
2 procedure P;
3
procedure Q;
begin R; end
3
procedure R;
begin Q; end
begin R; end
begin P; end
Static Link
Dynamic Link
RTST
DL chain
Static Link
Dynamic Link
P
Static Link
Dynamic Link
R
Static Link
Dynamic Link
Q
Base
Static Link
Dynamic Link
R
12
SL chain
Static Link
Dynamic Link
RTST
DL chain
Static Link
Dynamic Link
P
Static Link
Dynamic Link
R
Static Link
Dynamic Link
Q
Base
Static Link
Dynamic Link
R
Next
Y.N. Srikant
13
call
P
RTST
RTST
return
R
P
RTST
Q
P
RTST
Y.N. Srikant
R
P
RTST
14
Static Scope
Dynamic Scope
15
12
outer block
f(3)
g(12)
Y.N. Srikant
16
Y.N. Srikant
17
Y.N. Srikant
18
19
20
SL
pointer to
code for f
x=7
closure for
parameter h
g(f)
SL
h(3)
y=3
AR for the
call f(3)
Y.N. Srikant
An example:
main()
{ int x = 4;
int f (int y) {
return x*y;
}
int g (int int h){
int x = 7;
return h(3) + x;
}
g(f);// returns 12
}
21
Y.N. Srikant
22
23