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