内联汇编__sync_fetch_and_add和__sync_add_and_fetch

时间:2014-01-17 22:10:43

标签: gcc assembly inline-assembly built-in

GCC内置__sync_fetch_and_add是x86内联汇编的实现:

 asm("lock; xaddl %%eax, %2;"
      :"=a" (val)
      : "a" (val), "m" (*ptr) : )

如何使用addl指令代替xaddl实现此内联汇编?

我的另一个问题是内置__sync_add_and_fetch的x86内联汇编怎么样?

感谢。

1 个答案:

答案 0 :(得分:0)

Builtins不一定与单个明确定义的汇编代码块相对应。如果结果不是内置的,则__sync_add_and_fetch__sync_fetch_and_add会生成lock addl而不是lock xaddl,如果结果不是lock incl结果不会生效,第二个参数的值为1。

目前尚不清楚你的意思"我该如何实现这个内联汇编"。汇编是您编写或生成的内容,而不是您实现的内容(除非您正在编写汇编程序)。