#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;
}
Может кто-нибудь сказать мне, что именно делает этот код?Я имею в виду, у меня есть идея или части этой команды.«1» newval - это ввод, «= a» - очистить предыдущее значение и обновить его.«m» - для операции с памятью, но я не совсем понимаю функциональность этой функции.Что делает знак "+ m"?Делает ли эта функция что-то вроде m = a;m = newval;вернуть