logo

Главная Система команд x86 Базовая система команд CPU CMPXCHG8B
Система команд x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

CMPXCHG8B

Сравнить и обменять 8 байт

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

*

 

Код

Команда

Описание

Проц.

Пример

0F C7 m64

CMPXCHG8B m64

Сравнить EDX:EAX и m64, если равны, то установить ZF и загрузить ECX:EBX в m64, иначе очистить ZF и загрузить m64 в EDX:EAX

Pentium

cmpxchg8b [edi]

Операция:

IF EDX:EAX = DEST

THEN

   ZF = 1;

   DEST = ECX:EBX;

ELSE

   ZF = 0;

   EDX:EAX = DEST;

FI;

Описание:

Команда 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.

Особые ситуации защищенного режима:


#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) при невыровненной ссылке в память.

Входит в группу команд: Базовая система команд CPU



Все права защищены © 1997-2011 Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Яндекс.Метрика               Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники