我正在尝试编译另一个项目的代码,并且一直在获取Error: invalid instruction suffix for '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;
}
我想知道是否有人知道导致错误的原因以及可能的解决方案是什么?