#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; 返す