ABI 大致包含以下内容
~~Todo: ~~
- 函数调用:
- 数据类型布局:
- 异常处理:
- 内存管理:
- 命名重整(Name Mangling):
- 类型转换:
- 线程机制:
- 动态链接:
函数调用
- 参数传递:规定了函数参数是如何传递的,包括参数的顺序、位置(寄存器或栈)等。
- 返回值处理:规定了函数返回值是如何处理的,包括返回值的类型、位置等。
- 调用约定(calling conventions):规定了函数调用前后栈的清理方式,例如 cdecl、fastcall、stdcall 等。
数据布局
- 结构体和联合体:规定了结构体和联合体成员的布局、对齐和大小。
- 数组和指针:规定了数组和指针类型的布局和行为。
异常处理
- 规定了异常抛出和捕获的方式,包括异常对象的表示和异常处理机制。
内存管理
- 规定了内存分配和释放的机制,如堆内存的分配和回收。
命名重整
- 规定了函数和类型的名称在二进制中的表示方式,以解决函数重载等问题。
类型转换
- 规定了类型转换的操作,如从一种类型到另一种类型的转换规则。
线程机制
- 规定了多线程环境下代码的安全性和同步机制。
动态链接
- 规定了动态链接库(DLL 或 SO 文件)的加载和使用方式。