为什么x86-64使用IA-64 C++ ABI?

陳 力*_*陳 力 3 c++ x86-64 abi calling-convention design-decisions

x86-64 psABI:

9.1 C++

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

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

为什么不设计自己的ABI?

Ste*_*itt 7

因为"Itanium"C++ ABI被设计为通用的,或者至少是通用的.引用介绍:

通常,本文档是作为通用规范编写的,可供各种体系结构上的C++实现使用.但是,它确实包含Itanium 64位ABI的处理器特定材料,如此标识.在描述结构化数据布局的地方,我们通常假设Itanium psABI成员大小.32位ABI的实现通常只会根据需要改变成员的大小(即指针和长整数将变为32位),但有时紧凑性需要更改订单,我们注意到更多实质性更改.

短语"适当地实例化"是指调整Itanium psABI假设以与x86-64 psABI一起使用所需的调整.

  • Itanium开发始于1989年,x86-64开发后期开始; 硬件在类似的时间框架内可用(2003年适用于x86-64,2001适用于Itanium),而且在x86-64(2002年为psABI AFAICT,2002年未开始考虑C++)工作之前,C++ ABI正在Itanium(1999)上进行). (4认同)