我看到很多关于 C++ 没有标准 ABI 的讨论,就像 C 一样。我很好奇究竟是什么问题。到目前为止,我想出了
- 名称修改
- 异常处理
- RTTI
还有其他与 C++ 相关的 ABI 问题吗?
最佳答案
在我的头顶:
C++ 特定:
- 在哪里可以找到“this”参数。
- 如何调用虚函数
- 即它是否使用 vtable 或其他
- 用于实现这一点的结构的布局是什么。
- 如何处理多个定义
- 多个模板实例化
- 未内联的内联函数。
- 静态存储持续时间对象
- 如何处理创建(在全局范围内)
- 如何处理本地函数的创建(如何将其添加到析构函数列表中)
- 如何处理销毁(按创建的相反顺序销毁)
- 您提到了异常(exception)情况。还有如何在 main() 之外处理异常
- 即在 main() 之前或之后
通用。
- 参数传递位置
- 返回值位置
- 成员对齐
- 填充
- 寄存器使用情况(保留哪些寄存器哪些是临时的)
- 原始类型(例如 int)的大小
- 原始类型的格式(浮点格式)
关于C++ ABI 问题列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492180/