Application Binary Interface

二进制级别的接口,就是希望能对二进制的指令和数据能够不加修改的重用

对于 C 语言的目标代码来说,考虑下面方面的兼容性:

  • 内置类型内存模式
  • 组合类型存储方式
  • 外部符号与用户定义符号之间的命名和解析方式
  • 函数调用方式
  • 堆栈的分布方式
  • 寄存器使用约定……

对于 C++ 来说,加上如下:

  • 继承类的内存分布
  • 指向成员函数的指针的内存分布,如何通过指向成员函数的指针来调用成员函数
  • 如何调用虚函数
  • 模板实例化方式
  • 全局对象的构造和析构
  • 异常的产生和捕获机制
  • 标准库实现细节(RTTI)
  • inline 访问细节