2014-01-17 249 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