十四、缔造程序兼容的合约(上)
1. 什么是 ABI(Application Binary Interface)?
- 应用程序二进制接口
- 数据类型的大小、数据对齐方式
- 函数调用发生时的调用约定
- 系统调用的编号,以及进行系统调用的方式
- 目标文件的二进制格式、程序库格式、等等
2. 什么是EABI(Embedded Application Binary Interface)?
- 嵌入式应用程序二进制接口
- 针对嵌入式平台的ABI规范
- 可链接目标代码以及可执行文件格式的二进制规范
- 编译连接工具的基础规范、函数调用规范、调试格式规范等
- EABI 与ABI的主要区别是应用程序代码中允许使用特权指令
- 针对嵌入式平台的ABI规范
3.ABI的概念
- 广义上ABI的概念
- 泛指应用程序在二进制层面应该遵循的规范
- 狭义上ABI的概念
- 特指
- 某个具体硬件平台的ABI规范文档
- 某个具体操作系统平台的ABI规范文档
- 某个具体虚拟机平台的ABI规范文档
- 特指
4. ABI规范示例
为什么下面的代码能够以0作为退出码结束程序运行?
5. 问题:ABI和API有什么不同
- ABI和API是不同层面的规范
- ABI是二进制层面的规范
- API是源代码层面的规范
- ABI和API没有直接联系
- 遵循相同ABI 的系统,所提供的API可能不同
- 所提供API相同的系统,遵循的ABI可能不同