Assembly 实施";fetch“U和U公司”;在C++;

Assembly 实施";fetch“U和U公司”;在C++;,assembly,cross-compiling,alpha-cpu-architecture,Assembly,Cross Compiling,Alpha Cpu Architecture,我正在尝试为Alpha体系结构交叉编译x86多线程代码。我面临的唯一问题是fetch_和_inc操作的实现,因为它是作为x86的内联汇编函数实现的。因此,它有一些特定于x86的指令,这些指令通过交叉编译器直接复制到汇编代码中,然后交叉编译器尝试将它们组装到目标代码中,但它无法识别这些指令 我认为我有两个选择:要么在C++中实现 FutChyand AgIng/操作,要么用等价的alpha代码替换x86汇编代码。 有什么想法或建议吗?我很确定您必须执行第二个建议选项:“用等效的alpha代码替换x

我正在尝试为Alpha体系结构交叉编译x86多线程代码。我面临的唯一问题是
fetch_和_inc
操作的实现,因为它是作为x86的内联汇编函数实现的。因此,它有一些特定于x86的指令,这些指令通过交叉编译器直接复制到汇编代码中,然后交叉编译器尝试将它们组装到目标代码中,但它无法识别这些指令

我认为我有两个选择:要么在C++中实现<代码> FutChyand AgIng/<代码>操作,要么用等价的alpha代码替换x86汇编代码。


有什么想法或建议吗?

我很确定您必须执行第二个建议选项:“用等效的alpha代码替换x86汇编代码”。我找到了关于如何在Alpha CPU上实现fetch&inc的解释:


您正在使用哪个编译器的哪个版本?某些编译器具有高级原子本质。如果您的编译器支持这样的功能,这将大大简化此任务。

请参阅:谢谢您的帮助。交叉编译器使用gcc版本4.3.2。实际上,我发现了一条指令,它显然起到了“同步、获取和添加”的作用。但我不确定使用它是否安全,我的意思是编译后是否保留了原子性。我在gcc手册的原子本质下找到了该函数。这听起来像是你想用的。否则,它将无法与简单地编写“i++;”区分开来。