小编rbr*_*200的帖子

在GCC召集大会?

#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; 回来一个

c x86 gcc constraints inline-assembly

8
推荐指数
2
解决办法
845
查看次数

标签 统计

c ×1

constraints ×1

gcc ×1

inline-assembly ×1

x86 ×1