根据《Procedure Call Standard for the Arm Architecture》,
- r0-r3 are the argument and scratch registers; r0-r1 are also the result registers
- r4-r8 are callee-save registers
- r9 might be a callee-save register or not (on some variants of AAPCS it is a special register)
- r10-r11 are callee-save registers
r12-r15 are special registers
s16–s31 (d8–d15, q4–q7) must be preserved
- s0–s15 (d0–d7, q0–q3) and d16–d31 (q8–q15) do not need to be preserved