AT&T x86 | xadd%eax(%ecx)有什么作用?

时间:2019-01-06 21:46:38

标签: x86 att

它会交换%eaxvalue stored at address%ecxx并将金额存储在address%ecx中吗?

1 个答案:

答案 0 :(得分:1)

指令XADD ...

  

...将第一个操作数(目标操作数)与第二个操作数(源操作数)交换,然后将两个值的和加载到目标操作数中。

因此,根据其操作,它执行以下微代码:

TEMP ← SRC + DEST;
SRC  ← DEST;
DEST ← TEMP;

在您的情况下,这意味着xadd %eax, (%ecx)

  • 创建一个 TEMP 变量,其中包含EAX的值加上ECX指向的地址处的值
  • ECX指向的地址上的值移动到EAX
  • TEMP 变量移至ECX指向的地址

该指令可以与LOCK前缀结合使用,因此可以自动执行。