- 在程序中,我们可以使用16个通用寄存器中的14个来保存自己的数据,r13和r15分别是sp和pc寄存器,我们无法使用。
- ATPCS规定,栈指针应该是8字节对齐。
- ATPCS规定,被调用函数必须保证在执行前和执行后r4-r11的内容不变,即被调用函数必须在开始保存r4-r11,返回前再恢复。如下图:
routine_name
STMFD sp!, {r4-r12, lr} ; stack saved registers
; body of routine
; the fourteen registers r0-r12 and lr are available
LDMFD sp!, {r4-r12, pc} ; restore registers and return
其中保存r12是为了栈指针8字节对齐。
- ATPCS规定,函数调用过程中,r0-r3用于传递参数,