GCC原子内置:是否有一个列表显示在哪个平台上支持哪些?
是否有一个网站列出了各种平台及其对GCC原子内置的支持,用于各种GCC版本 编辑: 更清楚地说: GCC添加了_sync。。。作为平台上的内部函数,它包含对的支持。在所有其他平台上,它将这些作为普通函数声明保留,但不提供实现。这必须通过某种框架来实现GCC原子内置:是否有一个列表显示在哪个平台上支持哪些?,gcc,atomic,Gcc,Atomic,是否有一个网站列出了各种平台及其对GCC原子内置的支持,用于各种GCC版本 编辑: 更清楚地说: GCC添加了_sync。。。作为平台上的内部函数,它包含对的支持。在所有其他平台上,它将这些作为普通函数声明保留,但不提供实现。这必须通过某种框架来实现 所以问题是:GCC为哪些平台提供哪些内部函数而不需要添加函数实现?我不知道是否有这样一个列表,但是说自从GCC 4.4以来原子就得到了支持 GCC libstdc++实现) 这些函数可以在目标的机器描述中使用特定于机器的扩展器(通常在名为“sync
所以问题是:GCC为哪些平台提供哪些内部函数而不需要添加函数实现?我不知道是否有这样一个列表,但是说自从GCC 4.4以来原子就得到了支持 GCC libstdc++实现)
这些函数可以在目标的机器描述中使用特定于机器的扩展器(通常在名为“sync.md”的文件中)进行扩展,也可以在缺少此类扩展器的情况下使用CAS循环进行扩展。如果“sync.md”文件的存在表明原子支持是正确的,那么您可以在MIPS、i386、ARM、BlackFin、Alpha、PowerPC、IA64和Sparc中计算。[虽然这是一个老问题,但我认为我应该更新并完成答案] 我不知道每个体系结构版本和每个gcc版本的表,描述支持的内置 gcc的_sync内置函数自版本4.1起就存在(例如,参见此处所述: 并非所有目标处理器都支持所有操作。如果无法在目标处理器上实现特定操作,将生成警告并调用外部函数。外部函数将与内置函数同名,并附加后缀“\u n”,其中n是数据类型的大小 因此,当没有针对特定体系结构的实现时,将出现编译警告,我猜是链接时间错误,除非您使用适当的名称提供所需的函数 在GCC4.7之后,还有_原子内置和_同步内置被弃用。
例如,在我将代码切换到uuu原子内置时,看看Fedora如何使用gcc uuu sync和uuuu atomic)