GCC告訴垃圾`-4(%EBP)' 寄存器錯誤後,我的如下代碼:內聯彙編錯誤:垃圾`-4(%EBP) '寄存器後
static __inline__ int xchg_asm(int* lock, int val)
{
int ret;
__asm__ __volatile__(
LOCK "movl %1,%%eax; xchg (%1),%2 ; movl %%eax %0"
:"=m" (ret)
:"d"(lock), "c"(val));
return ret;
}
我看不出修改它。
您在第二個「movl」中缺少'''。 – Mat
不相關,但非常重要 - 在破壞數據列表中定義EAX。否則,GCC會假定EAX不會被此代碼所改變,並且您可能會收到令人討厭的錯誤。 – ugoren