sp
contains the stack pointer,lr
(link register) contains the return address,fp
contains the frame pointer,r19
to r28
are callee-saved and must be reset to their original state before returning, andr0
to r7
are used to store the arguments and results of a subroutine.Additionally:
sp
mod 16 == 0.lr
onto the stack,fp
onto the stack, thensp
into fp
.stp fp, lr, [sp, -16]! mov fp, sp
ldp fp, lr, [sp], #16