【问题标题】:AT&T x86 | What does `xadd %eax, (%ecx)` do?AT&T x86 | `xadd %eax, (%ecx)` 有什么作用?
【发布时间】:2019-01-06 21:46:38
【问题描述】:

它是否交换 %eaxvalue stored at address%ecxx 并将总和存储在 address%ecx 中?

【问题讨论】:

    标签: x86 att


    【解决方案1】:

    指令XADD ...

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

    所以,根据它的操作,它执行如下微码:

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

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

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

    该指令可以与LOCK 前缀组合,因此可以原子地执行。

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 2020-03-10
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      相关资源
      最近更新 更多