#include <stdlib.h>
static inline uint
xchg(volatile unsigned int *addr, unsigned int newval)
{
uint result;
asm volatile("lock; xchgl %0, %1" : "+m" (*addr), "=a" (result) : "1" (newval) : "cc");
return result;
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我这段代码到底是做什么的吗?我的意思是我有一个想法或这个命令的部分."1"newval是输入,"= a"是清除其先前的值并更新它."m"用于内存操作,但我对此功能的功能感到困惑."+ m"标志有什么作用?这个函数是否像m = a那样; m = newval; 回来一个