Application Binary Interface
二进制级别的接口,就是希望能对二进制的指令和数据能够不加修改的重用
对于 C 语言的目标代码来说,考虑下面方面的兼容性:
- 内置类型内存模式
- 组合类型存储方式
- 外部符号与用户定义符号之间的命名和解析方式
- 函数调用方式
- 堆栈的分布方式
- 寄存器使用约定……
对于 C++ 来说,加上如下:
- 继承类的内存分布
- 指向成员函数的指针的内存分布,如何通过指向成员函数的指针来调用成员函数
- 如何调用虚函数
- 模板实例化方式
- 全局对象的构造和析构
- 异常的产生和捕获机制
- 标准库实现细节(RTTI)
- inline 访问细节