2015-08-01 5 views
2

Я читал руководство Intel, vol. 2А.x86_64 - cmpxchg. Возвращаемое значение

Сравнивает значение в регистре AL, AX, EAX или RAX с первым операндом (операндом назначения). Если два значения равны, второй операнд (исходный операнд) загружается в операнд назначения. В противном случае операнд назначения загружается в регистр AL, AX, EAX или RAX. Регистр RAX доступен только в 64-битном режиме.

Какова цель загрузки адресата в аккумулятор в случае сбоя?

ответ

4

Это удобство, поэтому вам не нужно это делать самостоятельно. Обычно вы используете cmpxchg в цикле, где вы вычисляете новое значение на основе текущего. В случае сбоя вам, вероятно, потребуется текущее значение для пересчета и повторите попытку.

+0

Хорошо. Таким образом, в случае увеличения значения, это полезно. Но я могу смело игнорировать его, если указанное значение является логическим. Это верно? – Kroma

+1

Конечно, если это логическое значение и не соответствует вашему значению, вы знаете, что он должен быть другим;) – Jester

+3

@Kroma: Если вас интересует только логическое значение, вы, вероятно, хотите что-то вроде «lock bts», а скорее чем 'cmpxchg'. – EOF