|
最近复习汇编的时候对gcc内联汇编的操作数关联有些疑问,希望大家帮忙看看
1)
void atomic_add(int i, int v)
{
__asm__ __volatile__(
"addl %1,%0"
:"=m" (v)
:"ir" (i));
}
2)
void atomic_add(int i, int v)
{
__asm__ __volatile__(
"addl %1,%0"
:"=m" (v)
:"ir" (i), "m" (v)); #<--------
}
3
void atomic_add(int i, int v)
{
__asm__ __volatile__(
"addl %1,%0"
:"+m" (v) #<--------
:"ir" (i));
}
这三段代码有什么区别? |
|