在C ++中为共享多线程程序实现“fetch_and_inc”操作

时间:2013-01-31 01:29:15

标签: assembly cross-compiling alpha-cpu-architecture

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

我认为我有两个选择:要么用c ++而不是汇编来实现fetch_and_inc操作,要么用等效的Alpha代码替换x86汇编代码。

有任何想法或建议吗?

1 个答案:

答案 0 :(得分:1)

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

http://h71000.www7.hp.com/doc/82final/5841/5841pro_018.html#ldx_stx

您使用的是哪种编译器版本?某些编译器具有高级原子内在函数。如果您的编译器支持这样的功能,那么应该大大简化这项任务。