int c() ^ ^ { : : : : int x = 0x42424200; | +---------------------+ | return x; '----| return address | | } | saved frame pointer |---' main() | local int x |<--. void b(int *p) +---------------------+ | { .------------| return address | | int x = c(); <--|-----. | saved frame pointer |---' a() *p = ++x; | | .-->| local int x |<--. } | | | +---------------------+ | | .---------| return address | | int a() | | | | | saved frame pointer |---' b() { | | | | | local int x |<--. int x; | | | '---| local int *p | | b(&x); <--|--' | +---------------------+ | return ++x; | '------| return address | | } | | saved frame pointer |---' c() | | local int x |<--. int main(void) | +---------------------+ | { | ^ | int x = a(); <--' sp --' | return (++x) & 0xff; bp ----------------------------' }