【问题标题】:Why does x86-64 use IA-64 C++ ABI?为什么 x86-64 使用 IA-64 C++ ABI?
【发布时间】:2019-04-26 14:34:28
【问题描述】:

来自the x86-64 psABI

9.1 C++

对于 C++ ABI,我们将使用 IA-64 C++ ABI 并适当地实例化它。 该 ABI 的当前草案可在以下位置获得:

http://mentorembedded.github.io/cxx-abi/

为什么不设计自己的 ABI?

【问题讨论】:

    标签: c++ x86-64 calling-convention abi design-decisions


    【解决方案1】:

    因为“Itanium”C++ ABI 被设计为通用的,或者至少是通用的。引用the introduction:

    一般而言,本文档是作为通用规范编写的,可供各种架构上的 C++ 实现使用。但是,它确实包含用于 Itanium 64 位 ABI 的特定于处理器的材料,被标识为这样。在描述结构化数据布局的地方,我们通常假设 Itanium psABI 成员大小。 32 位 ABI 的实现通常会适当地更改成员的大小(即指针和长整数将变为 32 位),但有时为了紧凑性需要更改顺序,我们注意到更多实质性更改。

    短语“适当地实例化它”是指调整 Itanium psABI 假设以用于 x86-64 psABI 所需的调整。

    【讨论】:

    • 谢谢。 IIUC,安腾出现的时间比x86-64晚很多,那么,你知道在安腾出现之前,x86-64用的是哪个abi吗?
    • Itanium 开发始于 1989 年,x86-64 开发更晚;硬件在类似的时间范围内商业化(x86-64 为 2003 年,Itanium 为 2001 年),并且在 x86-64 (2002 年为 psABI AFAICT)开始工作之前,C++ ABI 在 Itanium(1999 年)上进行中,尚未考虑 C++ )。
    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2011-11-19
    • 1970-01-01
    • 2021-01-18
    相关资源
    最近更新 更多