汇编APCS
APCS(ARM过程调用标准)
一、寄存器的使用规则及其相应的名称
寄存器编号 别名 使用规则
R0a1参数寄存器
R1 a2 不管有没有传递参数,被调用函数都不会保护a1 - a4的值
R2 a3
R3 a4
R4 v1 通用变量寄存器
R5 v2 被调用函数必须保护v1 - v8的值
R6 v3如果被调用函数要使用变量寄存器,则要先保存寄存器的值到内存,函数返回时再恢复到寄存器
R7 v4
R8 v5
R9 v6 / sb
R10 v7/ sl
R11 v8 / fp
R12 ip 指令指针,通用临时过渡寄存器(草稿版),被调用函数会破坏ip的值
R13 sp 栈指针
R14 lr 链接寄存器
R15pc 程序计数器
二、参数 / 返回值的传递规则
1、 参数char*int
位置r0r1
2、参数charint short int
位置r0r1r2r3
3、参数intint intintcharintdoubleint//按4字节对齐
位置r0r1r2r3spsp+4sp+8sp+16
4、参数char longlongint
位置r0r2:r1r3
5、参数int int intlonglongint//编译器不会把longlong的一半放在r3再把另一半放在内存
位置r0r1r2spsp+8
6、返回值int
位置r0
7、返回值longlong
位置r0:r1
8、返回值longdouble
位置r3:r1:r0