Program Counter Flow
Instruction Execution
PC Execution
ADDR
INSTRUCTION
0x1000
MOV r0, #5
PC
0x1002
MOV r1, #3
0x1004
ADD r0, r1
0x1006
BL func
0x1010
func: PUSH {lr}
0x1012
SUB r0, #1
0x1014
POP {pc}
BL = jump to function target
POP {pc} = return to caller
Key Concepts
r15 = PC
Points to current
instruction + 4
Prefetch pipeline
Sequential
Thumb next = +2 or +4
depends on instruction encoding
Cortex-M33 executes Thumb only
Branch
B = unconditional
BL = save LR, jump
BX = branch reg
BEQ = branch if Z=1
not linear +2 stepping
GDB tip
stepi = step 1 instr