Stack in Action
Runtime Stack Analysis
Before Call
0x20082000
SP here
empty (0x20081FFC)
empty (0x20081FF8)
free stack space
unused lower space
0x20080000
Grows DOWN
After PUSH
0x20082000
PUSH {r4, lr}
saved LR
saved r4
free stack space
free stack space
SP now = 0x20081FF8
SP moved down
by 8 bytes
GDB: x/4xw $sp
saved regs are now visible
Key Points
PUSH saves
Preserves regs
before function
body runs
POP restores
Puts values
back when func
returns
Watch in GDB
x/4xw $sp
See stack data
stepi
Step 1 instr
watch stack
change live