mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
40 lines
2.1 KiB
Plaintext
40 lines
2.1 KiB
Plaintext
|
^ ->| |
|
||
|
Frame | | | |
|
||
|
Number - | | |============| int fact (int n)
|
||
|
| | | | i = 3 | {
|
||
|
| | | |------------| if (0 == n) {
|
||
|
| | | | f = ? | return 1; <-------- PC
|
||
|
#4 main() < | | |------------| }
|
||
|
| | | | | else {
|
||
|
| | -+->|------------| ---> return n * fact (n - 1);
|
||
|
| -+-+--+-----o | | }
|
||
|
= | | |============| | }
|
||
|
| | | | n = 3 | |
|
||
|
| | | |------------| | main ()
|
||
|
#3 fact (3) < | | | o---------+- {
|
||
|
| -+-+->|------------| | | int i;
|
||
|
| | | --+-----o | | |
|
||
|
= | | |============| | | for (i = 0; i < 10; i++) {
|
||
|
| | | | n = 2 | | -> int f = fact (i);
|
||
|
| | | |------------| | printf ("%d! = %d\n", i , f);
|
||
|
#2 fact (2) < | | | o------+--| }
|
||
|
| | | ->|------------| | }
|
||
|
| | -+--+-----o | |
|
||
|
= | | |============| |
|
||
|
| | | | n = 1 | |
|
||
|
| | | |------------| |
|
||
|
#1 fact (1) < | | | o------+--|
|
||
|
| | | |------------| |
|
||
|
| ---|--+-----o |<-+------- FP
|
||
|
= | |============| | |
|
||
|
| | | n = 0 | | |
|
||
|
| | |------------| | |
|
||
|
#0 fact (0) < | | o--------- |
|
||
|
| | |------------| |
|
||
|
| --+-----o |<--------- SP |
|
||
|
= |============| |
|
||
|
| | Red Zone | v
|
||
|
| \/\/\/\/\/\/\/ Direction of
|
||
|
#-1 < \/\/\/\/\/\/\/ stack growth
|
||
|
| | |
|