Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
CMPXCHG8B
Влияние команды на флаги и форматы команды:
* |
0F C7 m64 |
CMPXCHG8B m64 |
Сравнить EDX:EAX и m64, если равны, то установить ZF и загрузить ECX:EBX в m64, иначе очистить ZF и загрузить m64 в EDX:EAX |
Pentium |
cmpxchg8b [edi] |
Описание:
Команда CMPXCHG8B сравнивает 64-битное значение EDX:EAX с операндом в памяти (DEST). EDX содержит старшие 32 бита, EAX содержит младшие 32 бита 64-битного значения. Если они равны, то 64-битное значение в ECX:EBX сохраняется в DEST. ECX содержит старшие 32 бита, а EBX младшие 32 бита. В противном случае DEST загружается в EDX:EAX.
Эта команда может быть использована с префиксом LOCK. Для упрощения интерфейса с шиной процессора операнд-назначение принимает цикл записи независимо от результата сравнения. Операнд-назначение записывается обратно, если сравнение неудачно, и операнд-источник записывается в операнд-назначение в противном случае. (Процессор никогда не производит блокировки чтения без блокировки записи.)
Операнд m64 ранее был использован только в контексте операций с плавающей запятой. Он указывает на 64-битное значение в памяти по адресу определенному байтом ModR/M.
Операция:
IF EDX:EAX = DEST
THEN
ZF = 1;
DEST = ECX:EBX;
ELSE
ZF = 0;
EDX:EAX = DEST;
FI;
Особые ситуации защищенного режима:
#UD, если операнд-назначение не является операндом в памяти.
#GP(0), если результат находится в сегменте, запрещенном для записи, если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.
Особые ситуации режима реальной адресации:
#UD, если операнд-назначение не является операндом в памяти.
#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.
Особые ситуации режима V86:
Такие же, как и в режиме реальной адресации.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru