龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > 汇编开发 >

汇编APCS

时间:2011-05-21 16:24来源:未知 作者:admin 点击:
分享到:
APCS(ARM过程调用标准) 一、寄存器的使用规则及其相应的名称 寄存器编号 别名 使用规则 R0a1参数寄存器 R1 a2 不管有没有传递参数,被调用函数都不会保护a1 - a4的值 R2 a3 R3 a4 R4 v1 通用

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


精彩图集

赞助商链接