arm AAPCS(程序调用标准)

ABI         :  Application Binary Interface 应用程序二进制接口

EABI      :  Embedded ABI  嵌入式ABI

PCS       :  Procedure Call Standard  程序调用标准

AAPCS  :  PCS for ARM Architecture    ARM体系结构程序调用标准

APCS     :  ARM Procedure Call Standard   ARM程序调用标准(已经废弃)

TPCS     :  Thumb Procedure Call Standard  Thumb程序调用标准(已经废弃)

ATPCS   :  ARM-Thumb Procedure Call Standard 

PIC, PID :  Position-independent code, position-independent data  位置独立代码和数据


Activation(call-frame)  stack   : 程序调用记录栈

Activation record(call frame)  :  用于程序保存寄存器和本地变量的内存(通常在栈上申请)

Variadic routine : 模板函数, 由调用程序决定它的参数个数和类型,而不是被调用函数.

Scratch register( temporary register) : 草稿寄存器, 用来保存计算的中间值(通常在程序中未命名且有限的生命周期).

Variable register : 变量寄存器, 用来保存变量的值, 通常用于程序的本地变量.

Program State  : 程序状态, 程序的内存状态,包括寄存器的值

=========================================================

1. 在被调用程序(called)开始执行之前,  调用者(caller)负责创建一个程序状态 (一般是SP设置,以及参数传递)

2. 被调用程序保存调用者(caller)传递过来的程序状态

3. 被调用程序正确修改它的程序状态

一些相关的变种, 例如可以使用R9寄存器来检查执行环境.

AAPCS标准指出四个小节:

  * 数据的布局

  * 栈的布局 和 程序间公共接口的调用

  * 处理器扩展的变化, 或者说执行环境限制地址模型

  * C和C++语言数据类型的绑定


AAPCS 要求:

  * 任何时间, 栈限制和基础栈对齐是可见的(stack limits and basic stack alignment are observed)

  * 任何程序调用静态链接跳转时, 使用IP(r12)的规则是可见的


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值