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)的規則是可見的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章