gcc __sync 内置函数和 x86

Posted

技术标签:

【中文标题】gcc __sync 内置函数和 x86【英文标题】:gcc __sync builtins and x86 【发布时间】:2012-06-14 17:09:04 【问题描述】:

我正在查看关于原子比较和交换以及 gcc 内在函数的 question。我注意到从gcc manual 引用的答案(注意我看到的答案是从早期版本的 gcc 中引用的,但我已经链接到最新版本的手册,因为我已经检查过是否有任何变化)。但是,当我查看手册中的文字时,我发现它似乎引用了 Itanium 而不是 x86

以下内置函数旨在与那些兼容 英特尔安腾处理器特定应用程序二进制文件中描述 接口,第 7.4 节。因此,它们偏离了正常的 GCC 使用“__builtin_”前缀的做法,进一步说明它们是 重载,因此它们适用于多种类型。

我的问题是为什么 gcc 引用 Itanium 文档,这会影响内部函数在 x86 上的工作方式吗?是否有任何差异,或者是否可以安全地假设即使 gcc 手册引用了 Itanium 手册,gcc 手册所描述的所有内容都可以在 x86 系统上正常工作?

【问题讨论】:

【参考方案1】:

我的理解是,很多 gcc 的 ABI 决策(egcs 分支)都是基于好船 Itanic 的 ABI 规范。这包括 C++ 符号的名称修改约定。当实际处理器可用时,我们付出了巨大的努力 (Project Trillian) 准备好 IA-64 Linux(和 GCC)。语义旨在独立于平台,尽管它们将被 __atomic 内置函数所取代。

【讨论】:

以上是关于gcc __sync 内置函数和 x86的主要内容,如果未能解决你的问题,请参考以下文章

原子集的内置 GCC 是啥?

四种GCC内置位运算函数

gcc 内置原子比较和交换

为 C 数学函数调用 MSVC 内置/内在函数

在哪些情况下 __sync_synchronize 会接收任何参数?

python之迭代器生成器和内置函数,匿名函数