Concept Flow - Subroutine call convention (AAPCS)
Caller prepares arguments in registers R0-R3
Caller pushes extra arguments on stack if >4
Caller executes BL (branch with link) to subroutine
Subroutine saves LR (R14) if needed
Subroutine uses R0-R3 for parameters
Subroutine uses R4-R11 as callee-saved registers
Subroutine executes instructions
Subroutine places return value in R0
Subroutine restores saved registers and returns with BX LR
Caller resumes, uses return value from R0
Shows the step-by-step flow of how arguments are passed, subroutine is called, registers saved/restored, and return value passed back following AAPCS.