2014-01-17 220 views
0

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

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

如何使用addl指令,而不是xaddl我实现这个内嵌汇编?

而我的另一个问题是如何将内置__sync_add_and_fetch的x86内联汇编?

谢谢。

回答

0

建筑物不一定与单一定义良好的汇编代码块相对应。尤其是这两个__sync_add_and_fetch__sync_fetch_and_add会产生lock addl而不是lock xaddl如果结果没有活着走出内置的,他们可能会产生lock incl如果结果不活出,第二个参数是已知有值1

目前还不清楚“我怎样才能实现这个内联汇编”。汇编是你编写或生成的东西,而不是你实现的东西(除非你正在编写汇编程序)。

+0

“我该如何实现”我指的是如何在内联汇编中编写此指令 – robertog8

+0

请参阅内联汇编中的gcc文档,网址为http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html。 – gsg