返回列表 发新帖

AAPCS64规则简介

[复制链接]

39

主题

349

回帖

1676

积分

高中生

Rank: 4

金币
643
好评
11
信誉
125

考神MT论坛新人MT论坛最佳新人

发表于 2022-11-19 09:35:36 来自手机  | 显示全部楼层 | 阅读模式  来自 江苏
本帖最后由 ggggmllll 于 2022-11-19 09:35 编辑

AAPCS64即Aarch64过程调用标准,描述了在ARM 64位体系结构下应用程序二进制接口(ABI)在过程调用中应遵循的调用约束,涉及寄存器使用规则、栈布局、函数传参以及保存返回值等内容

1,寄存器
ARM 64位处理器中包含了31个64位通用寄存器,依次为r0-r30:在64位上下文中,使用x0-x30的命名引用寄存器,即读写完整的64位;在32位上下文中使用w0-w30的命名来使用寄存器,即仅读写32位
此外,处理器还提供了栈指针寄存器(sp)。对于所有基本程序执行寄存器在过程调用中的作用描述如下所示:
r0~r7:函数参数传递
r29:帧指针寄存器,存放当前过程调用栈帧的起始地址,可使用FP别名引用
r30:链接寄存器,用于保存函数调用的返回地址,可使用LR别名引用
sp:栈指针寄存器,指向当前堆栈的栈顶

pc:当前执行指令的地址。它是由执行的指令的大小递增的,通常是四个字节,在AArch64状态,PC不能被直接访问
pstate:处理状态或pstate是处理状态信息的抽象


2,运行时堆栈
堆栈是内存的连续区域,可用于存储过程调用中的寄存器状态、局部变量,并在没有足够的参数寄存器可用时传递多余的其它参数,和arm32一样,都是满递减堆栈,详见下图:


3,参数传递
Aarch64同时支持使用寄存器或堆栈进行参数传递。Aarch64标准提供了8个通用寄存器(r0-r7)用于传递函数参数,依次对应于参数1~参数7。一般来说,对于只带有少量参数的函数,仅使用寄存器就足够了;超过8个的参数会存放在堆栈中用于传递给子例程。


3,返回值
用于参数传递的寄存器同时也可用来保存函数的返回值,对于C语言这种函数返回类型基本都是一个整数(指针,变量)的,r0寄存器足够了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

4

主题

247

回帖

703

积分

初中生

Rank: 3Rank: 3

金币
546
好评
1
信誉
100
发表于 2022-11-19 09:48:16 来自手机  | 显示全部楼层  来自 新疆
学习一下
回复

使用道具 举报

4

主题

3264

回帖

6737

积分

硕士生

Rank: 6Rank: 6

金币
1445
好评
3
信誉
98
发表于 2022-11-19 09:59:07 | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

20

主题

1705

回帖

4355

积分

大学生

Rank: 5Rank: 5

金币
1635
好评
4
信誉
101

考神MT论坛最佳新人

发表于 2022-11-19 10:47:05 来自手机  | 显示全部楼层  来自 陕西
学习一下
回复

使用道具 举报

48

主题

3111

回帖

7523

积分

硕士生

Rank: 6Rank: 6

金币
1622
好评
3
信誉
102

MT论坛最佳新人MT论坛新人

发表于 2022-11-20 00:16:38 来自手机  | 显示全部楼层  来自 广西
感谢分享
回复

使用道具 举报

24

主题

6184

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2658
好评
12
信誉
384

考神

发表于 2022-11-20 01:59:19 来自手机  | 显示全部楼层  来自 江苏
学习一下
回复

使用道具 举报

56

主题

3619

回帖

8852

积分

硕士生

6

Rank: 6Rank: 6

金币
657
好评
43
信誉
145

考神MT论坛新人MT论坛帅哥

QQ
发表于 2022-11-20 08:17:57 来自手机  | 显示全部楼层  来自 河南
看看大佬
回复

使用道具 举报

90

主题

3227

回帖

7464

积分

硕士生

Rank: 6Rank: 6

金币
1814
好评
0
信誉
93
发表于 2022-11-20 08:25:19 来自手机  | 显示全部楼层  来自 湖南
看看......
回复

使用道具 举报

90

主题

3227

回帖

7464

积分

硕士生

Rank: 6Rank: 6

金币
1814
好评
0
信誉
93
发表于 2022-11-20 08:27:42 来自手机  | 显示全部楼层  来自 湖南
谢谢分享
回复

使用道具 举报

0

主题

7449

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2838
好评
0
信誉
98

MT论坛新人考神MT论坛帅哥MT论坛最佳新人

发表于 2022-12-22 09:01:38 来自手机  | 显示全部楼层  来自 广西
感谢分享
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表