Ik heb een opdracht waarbij ik:
1) een stackframe moet tekenen van de functie
zoek
2) de volledige stack moet tekenen bij een aanroep van
zoek waarbij de recursiediepte 3 is.
Code:
Gegeven is het volgende C-programma:
int x, buf[20];
// de buffer wordt gevuld met zinvolle getallen
int zoek(int p, int x)
{
if (p >= 20) return -1;
else if (buf[p] == x) return p;
else return zoek(p+1, x);
}
x = zoek(0, 3);
printf(“x=%d”, x);
Ik heb het volgende:
1)
Code:
--------
| ebp
| p
| x
--------
2)
Code:
----------
| ebp
| p = 2
| x = 3
| --
| ebp
| p = 1
| x = 3
| -
| ebp
| p = 0
| x = 3
----------
Weet iemand of dit een beetje klopt? C zet argumenten op de stack van rechts naar links, daarna zet de functie zelf ebp op de stack.