Андрей Газибаров


без тайни

Инструкциите On-line

CMPXCHG8B
Сравнение с размяна на осем байта
Общи форма: CMPXCHG8B dest
Форма КОП CPUID
16 32 64 Alt  
[LOCK] CMPXCHG8B mdd [F0] 0F C7 /1 [F0] 0F C7 /1 [F0][40+bx] 0F C7 /1 [F0] 6B /r EDX.8
Действие IF EDX:EAX = dest
  ZF ← 1
  dest ← ECX:EBX
ELSE
  ZF ← 0
  EDX:EAX ← dest
ENDIF
Пояснение Тази инструкция е аналогична на CMPXCHG, но операндите са с двойна ширина – осигурява се възможност за неделима операция четене-проверка-модификация-запис на осем последователни байта (дескриптор!), т.е. две двойни думи.
Флагове
PE VM NT IOPL OF DF IF TF SF ZF AF PF CF
        ?       ? AF ? ? ?
Аритметичният смисъл на ZF тук е, че двата операнда са равни, а булевият – че е била извършена размяната.
CPU
8086 186 V20 286 386 486 P P-P P-II MMX SSE 3D! E64
            • • •        
Инструкцията се изпълнява, ако CPUID(1) върне EDX.8 = 1
ИзключенияОБЩИ
 
Съдържание Пълен текст
 
  PDF, 3.6M Приложение, 18К