AT & T x86 | Что делает `xadd% eax, (% ecx)`? - PullRequest
0 голосов
/ 07 января 2019

Меняет ли он %eax и value stored at address%ecxx и сохраняет ли сумму в address%ecx?

1 Ответ

0 голосов
/ 07 января 2019

Инструкция XADD ...

... Обменивает первый операнд (операнд-адресат) на второй операнд (операнд-источник), а затем загружает сумму двух значений в операнд-адресат.

Итак, в соответствии с Operation он выполняет следующий микрокод:

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

В вашем случае это означает, что xadd %eax, (%ecx)

  • Создает переменную TEMP , содержащую добавление значения EAX плюс значение по адресу, на который указывает ECX
  • Перемещает значение по адресу, на который указывает ECX, на EAX
  • Перемещает переменную TEMP по адресу, указанному ECX

Эта инструкция может сочетаться с префиксом LOCK и, следовательно, выполняться атомарно.

...