GCC内置__sync_fetch_and_add
是x86内联汇编的实现:
asm("lock; xaddl %%eax, %2;"
:"=a" (val)
: "a" (val), "m" (*ptr) : )
如何使用addl
指令代替xaddl
实现此内联汇编?
我的另一个问题是内置__sync_add_and_fetch
的x86内联汇编怎么样?
感谢。
答案 0 :(得分:0)
Builtins不一定与单个明确定义的汇编代码块相对应。如果结果不是内置的,则__sync_add_and_fetch
和__sync_fetch_and_add
会生成lock addl
而不是lock xaddl
,如果结果不是lock incl
结果不会生效,第二个参数的值为1。
目前尚不清楚你的意思"我该如何实现这个内联汇编"。汇编是您编写或生成的内容,而不是您实现的内容(除非您正在编写汇编程序)。