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