代码之家  ›  专栏  ›  技术社区  ›  Daksh Shah

AT&T x86 |'xadd%eax,(%ecx)'做什么?

  •  -1
  • Daksh Shah  · 技术社区  · 7 年前

    交换吗 %eax value stored at address%ecxx 并将总数存储在 address%ecx ?

    1 回复  |  直到 7 年前
        1
  •  3
  •   zx485 potemkin    7 年前

    指令 XADD ...

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

    那么根据它的 活动 ,它执行以下微码:

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

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

    • 临时雇员 包含以下值之和的变量: EAX 加上 ECX
    • ECX EAX
    • 移动 临时雇员 变量指向的地址 ECX

    LOCK 前缀,因此可以原子化执行。

    推荐文章