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

时间:2018-11-23 12:47:57

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

来自the x86-64 psABI

  

9.1 C ++

     

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

     

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

为什么不设计自己的ABI?

1 个答案:

答案 0 :(得分:7)

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

  

通常,本文档是作为通用规范编写的,可用于各种体系结构上的C ++实现。但是,它确实包含用于Itanium 64位ABI的特定于处理器的材料,因此已确定。在描述结构化数据布局的地方,我们通常假定Itanium psABI成员大小。对于32位ABI的实现通常只会适当地更改成员的大小(即,指针和long int将变为32位),但是有时为了紧凑起见,需要对顺序进行更改,并且我们注意到更多的实质性更改。

“适当实例化”一词是指调整Itanium psABI假设以与x86-64 psABI一起使用所需的修改。