__asm__ volatile (
"lock; xadd %0, %1 \n\t"
: "=r" (old_value), "=m" (value)
: "0" (increment_), "m" (value)
: "cc", "memory");
r 使用任何可用的通用寄存器
m 使用变量的内存位置
= 只能写入操作数
0 如果内联汇编代码中的输入和输出值共享程序中相同的c变量, 则可以指定使用占位符作为约束值,
cc "cc"来向GCC声明这一点
memory 内存操作
"lock; xadd %0, %1 \n\t"
: "=r" (old_value), "=m" (value)
: "0" (increment_), "m" (value)
: "cc", "memory");
r 使用任何可用的通用寄存器
m 使用变量的内存位置
= 只能写入操作数
0 如果内联汇编代码中的输入和输出值共享程序中相同的c变量, 则可以指定使用占位符作为约束值,
cc "cc"来向GCC声明这一点
memory 内存操作