Arm APCS(Arm Application Proceure Call)对于寄存器的使用有一些规定,比较重要的有:
1) 函数调用要保持寄存器 r4~r8, r10, r11 和 sp 的值。
2)stack 一定要是8字节对齐,并且, ARM 和 THUMB的 C/C++编译器必须用 full, descending stack.
3)在一个函数和他的子函数调用之间, 链接器可以使用 r12 (ip)作为一个 scrach 寄存器。也可以在函数内部用来保存在子函数调用的时候的中间值
4)r4~r8, r10, r11可以用来保存函数局部变量的值。
5)r0~r3用来在函数调用的时候传递函数的参数以及返回值;也可以用来保存函数内部的中间值