arm AAPCS(程序调用标准)

来源:互联网 发布:cellquest软件下载 编辑:程序博客网 时间:2024/06/14 06:25

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)的规则是可见的


原创粉丝点击