我想編譯另一個項目的代碼,我一直在收到Error: invalid instruction suffix for 'cmpxchg'
。的錯誤持續指着這行代碼是:錯誤:無效的`cmpxchg'指令後綴
inline bool CAS(long *ptr, long oldv, long newv) {
unsigned char ret;
/* Note that sete sets a 'byte' not the word */
__asm__ __volatile__ (
" lock\n"
" cmpxchgq %2,%1\n"
" sete %0\n"
: "=q" (ret), "=m" (*ptr)
: "r" (newv), "m" (*ptr), "a" (oldv)
: "memory");
return ret;
}
我,不知道是否有人知道這可能是錯誤的原因是什麼可能的解決方案?
你正在編譯一個64位程序嗎? – nneonneo 2013-03-12 23:01:49
我下載了從學術團體的項目,他們不提它是64位或不 – Hank 2013-03-12 23:03:14
'q'後綴意味着四字 - 64位數量。我懷疑它會在32位模式下編譯。嘗試編譯程序作爲64位(GCC'-m64'編譯器標誌) – nneonneo 2013-03-12 23:03:56