ARM在《GitHub - ARM-software/abi-aa: Application Binary Interface for the Arm® Architecture》维护了ARM架构的一系列ABI文档,主要包括32位和64位架构两大系列,以及一些新增扩展相关ABI(SVE、PAuth、Morello)等、
ABI for the Arm 32-bit Architecture
specification | latest on Github | last on developer site | 说明 |
---|---|---|---|
Application Binary Interface for the Arm architecture introduction | bsabi32 | 2019Q4 | |
Procedure Call Standard for the Arm Architecture | aapcs32 | 2020Q2 | 介绍ARM32下函数调用基本流程、数据类型和对齐、以及对VFP、ASIMD等的支持。 |
ELF for the Arm Architecture | aaelf32 | 2019Q1 |
ELF规格来自于System V ABI规格的Chapter 4和Chapter 5。 此处介绍的是ARM 32处理器特殊的ELF规格。 |
DWARF for the Arm Architecture | aadwarf32 | 2018Q4 | 介绍作为GDWARF的DWARF 3.0下ARM架构特定使用方法。 |
Base Platform ABI for the Arm Architecture | bpabi32 | 2018Q4 | |
C++ ABI for the Arm Architecture | cppabi32 | 2019Q4 | |
Exception Handling ABI for the Arm Architecture | ehabi32 | 2018Q4 | |
Run-time ABI for the Arm Architecture | rtabi32 | 2018Q4 | |
C Library for the Arm Architecture | clibabi32 | 2018Q4 | |
Support for Debugging Overlaid Programs | dbgovl32 | 2018Q4 | |
Addenda to, and Errata in, the ABI for the ARM Architecture | addenda32 | 2019Q1 | |
ABI Advisory Note - SP 8-byte alignment | advnote132 | 2018Q4 |
ELF和DWARF之间的关系不是精灵(elf)和小矮子(dwarf)的关系。
ELF (Executable and Linkable Format) 是一种Linux/UNIX下可执行文件、库文件格式。
DWARF (Debug With Arbitrary Record Format) 是ELF中常用的调试信息格式。DWARF告诉调试器可执行文件和源码的关系。
ABI for the Arm 64-bit Architecture
specification | latest on Github | last on developer site |
---|---|---|
Procedure Call Standard for the Arm 64-bit Architecture | aapcs64 | 2018Q4 |
ELF for the Arm 64-bit Architecture | aaelf64 | 2020Q2 |
DWARF for the Arm 64-bit Architecture | aadwarf64 | 2020Q2 |
C++ ABI for the Arm 64-bit Architecture | cppabi64 | 2020Q2 |
Vector Function ABI for the Arm 64-bit Architecture | vfabia64 | 2019Q2 |
ABI for the Arm 64-bit Architecture with SVE support
SVE(Scalable Vector Extension)是arm AArch64架构下的下一代SIMD指令集,旨在加速高性能计算,SVE引入了很多新的架构特点, 比如
- 可变矢量长度
- 每通道预测
- 聚集加载和分散存储
- 横向操作
specification | latest on Github | last on developer site |
---|---|---|
Procedure Call Standard for the Arm 64-bit Architecture with SVE support | content merged with aapcs64 | 2019Q2 |
DWARF for the Arm 64-bit Architecture with SVE support | content merged with aadwarf64 | SVEdwf 00bet1 |
Vector Function ABI for the Arm 64-bit Architecture (identical to document in ABI for the Arm 64-bit Architecture section) | vfabia64 | 2019Q2 |
PAuth ABI Extension
specification | latest on Github | last on developer site | 说明 |
---|---|---|---|
PAuth ABI Extension to ELF for the Arm 64-bit Architecture | pauthabielf64 | - | 关于ARMv8.3-A架构新增的对指针进行签名和验签ELF扩展技术PAuth(Pointer Authentication)。 |
Morello Extension
specification | latest on Github | last on developer site |
---|---|---|
Morello Extension to the Procedure Call Standard for the Arm 64-bit Architecture | aapcs64-morello | 2020Q3 |
Morello Extension to ELF for the Arm 64-bit Architecture | aaelf64-morello | 2020Q3 |
Morello Extension to DWARF for the Arm 64-bit Architecture | aadwarf64-morello | 2020Q3 |
Miscellaneous material
specification | latest on Github | last on developer site |
---|---|---|
Semihosting for AArch32 and AArch64 | semihosting | 2019Q4 |