什么是ABI


什么是应用程序接口(ABI)

ABI是编程语言具体实现细节的描述。

(一些有助于理解的废话:编译器需要Application Binary Interface (ABI) 来支持新的编程语言特性。所有的程序员都希望能够让新的编译器重新编译他们的代码(生成性能更好的机器码)来获得更好的性能。如果ABI并没有一套规范并且这套规范经常更改,并没有固定下来的时候,不同的编译器就会有不同的编程语言实现,导致去维护不同模块的代码特别痛苦。为了解决这个问题,原来的做法是所有的模块代码必须使用同一个编译器进行编译。为了让不同模块的代码一起工作,需要一个固定的ABI描述编程语言的信息。)

C语言

C语言的ABI定义了下面的内容:

  • 不同类型的大小和内存分布(char, int, float and so on)
  • 组合类型的内存分布 (arrays and structs)
  • 程序员定义名称的外部(链接器可见)拼写
  • 函数调用机器码序列
  • 内存栈分布
  • 寄存器的使用规定

c++ 语言

C++ ABI包括了C的ABI。另外它包括下面一些特征:

image-20230104170802358


文章作者: 小灰灰
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小灰灰 !
评论
  目录