int main( ) { x = a(); } int a() { y = b(); } int b() { z = c(); } int c() { }
1
z = c(); } } int a() { int c() { y = b(); } } 1 The call - - PowerPoint PPT Presentation
int main( ) { int b() { x = a(); z = c(); } } int a() { int c() { y = b(); } } 1 The call tree: main calls a main a calls b b calls c a c returns to b b returns to a b a returns to main c 2 Partial assembly code for main()
1
2
3
main: . branch a # call a_rtn1: copy x, a_rtn_value . branch a # another call to a a_rtn2: copy x, a_rtn_value . a: . . branch b # call b_rtn: copy y, b_rtn_value . . branch # return from a
4
5
6
7
8
9
10
11
12
main: la a_rtn, rtn1 branch a # call rtn1: # copy out return value a: push a_rtn # recursive call la a_rtn, rtn2 branch a rtn2: # copy out return value . . pop a_rtn branch (a_rtn)
13
14
15
16
17
18
19
20
21
22
23
24
25