我正在查看关于原子比较和交换以及gcc内在函数的question。我注意到gcc manual引用了一个答案(请注意我从早期版本的gcc引用的答案,但我已经链接到最新版本的手册,因为我已经检查过是否有任何更改)。但是,当我查看手册中的文字时,我发现它似乎引用Itanium
而不是x86
:
以下内置版旨在与这些内容兼容 在英特尔安腾处理器特定应用程序二进制文件中描述 接口,第7.4节。因此,他们偏离了正常的海湾合作委员会 使用“__builtin_”前缀的做法,以及它们是什么 重载使得它们可以处理多种类型。
我的问题是为什么gcc引用Itanium文档并且这会影响内在函数如何在x86上运行?是否有任何差异或者可以安全地假设即使gcc手册引用了Itanium手册,gcc手册描述的所有内容都可以在x86系统上正常工作?
答案 0 :(得分:1)
我的理解是,很多gcc的ABI决定(egcs fork)都是基于ABI规格的好船Itanic。这包括C ++符号的名称修改约定。当实际处理器可用时,IA-64 Linux(和GCC)已经做好了大量工作(Project Trillian)。语义旨在与平台无关,但它们将被__atomic
内置函数替换。