arm7汇编中怎么使用c中的变量_汇编-要保存在ARM C调用约定中的寄存器是什么?...

对于64位ARM,为A64(来自ARM 64位体系结构的过程调用标准)

A64指令集可见31个64位通用(整数)寄存器。 这些标记为r0-r30。 在64位环境中,通常使用名称x0-x30来引用这些寄存器。 在32位环境中,寄存器是使用w0-w30指定的。 此外,堆栈指针寄存器SP可以与数量有限的指令一起使用。

SP堆栈指针

r30 LR链接寄存器

r29 FP框架指针

r19…r28被调用者保存的寄存器

r18平台寄存器(如果需要); 否则为临时寄存器。

r17 IP1第二个过程内调用临时寄存器(可以使用通过呼叫单板和PLT代码); 在其他时间可用作临时注册。

r16 IP0第一个过程内调用暂存寄存器(可由调用使用单板和PLT代码); 在其他时间可用作临时注册。

r9…r15临时寄存器

r8间接结果位置寄存器

r0…r7参数/结果寄存器

前八个寄存器r0-r7用于将参数值传递到子例程中并从函数返回结果值。 它们还可以用于在例程中保留中间值(但通常仅在子例程调用之间)。

链接程序可以将寄存器r16(IP0)和r17(IP1)用作例程与其调用的任何子例程之间的暂存寄存器。 它们也可以在例程中使用,以保存子例程调用之间的中间值。

寄存器r18的作用是特定于平台的。 如果平台ABI需要专用的通用寄存器来承载过程间状态(例如,线程上下文),则应为此目的使用该寄存器。 如果平台ABI没有此类要求,则应使用r18作为附加的临时寄存器。 平台ABI规范必须记录该寄存器的用法。

SIMD

ARM 64位体系结构还具有另外32个寄存器v0-v31,可由SIMD和浮点运算使用。 寄存器的确切名称将更改,表明访问的大小。

注意:与AArch32不同,在AArch64中,SIMD和浮点寄存器的128位和64位视图在较窄的视图中不与多个寄存器重叠,因此q1,d1和s1都引用该寄存器中的同一条目 银行。

前八个寄存器v0-v7用于将参数值传递到子例程中并从函数返回结果值。 它们还可以用于在例程中保留中间值(但通常仅在子例程调用之间)。

被调用者必须在子例程调用之间保留v8-v15寄存器。 其余的寄存器(v0-v7,v16-v31)不需要保留(或应由调用方保留)。 此外,仅需要保留v8-v15中存储的每个值的最低64位; 调用方有责任保留较大的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值