Сборник по задачам и примерам Assembler


       

в исходном тексте программы можно


DefineXMMxRegs Macro IFDEF APPJ.6BIT

rxmmO TEXTEQU<AX>

rxmml TEXTEQU<CX>

rxmm2 TEXTEQU<DX>

rxmm3 TEXTEQU<BX>

rxmm4 TEXTEQU<SP>

rxmm5 TEXTEQU<BP>

гхттб TEXTEQU<SI>

rxmm7 TEXTEQU<DI>

RXMMO TEXTEQU<AX>

RXMM1 TEXTEQU<CX>

RXMM2 TEXTEQU<DX>

RXMM3 TEXTEQU<BX>

RXMM4 TEXTEQU<SP>

RXMM5 TEXTEQU<BP>

P.XMM6 TEXTEQU<SI>

RXMM7 TEXTEQU<DI>

rxmml TEXTEQU<ECX>

rxmm2 TEXTEQU<EDX>

rxmm3 TEXTEQU<EBX>

rxmm4 TEXTEQU<ESP>

rxmm5 TEXTEQU<EBP>

гхттб TEXTEQU<ESI>

ГХШП7 TEXTEQU<EDI>

RXMMO TEXTEQU<EAX>

RXMM1 TEXTEQU<ECX>

NRXMM2 TEXTEQU<EDX>

RXMM3 TEXTEQU<EBX>

RXMM4 TEXTEQU<ESP>

RXMM5 TEXTEQU<EBP>

RXMM6 TEXTEQU<ESI>

RXMM7 TEXTEQU<EDI> ENDIF endm

Таблица 10.1. Кодировка регистров в машинном коде команды































































































Код в поле reg


Регистр целочисленного

устройства


ХММ-регистр


000


АХ/ЕАХ


RXMM0


001


СХ/ЕСХ


RXMM1


010


DX/EDX


RXMM2


Oil


ВХ/ЕВХ


RXMM3


100


SP/ESP


RXMM4


101


ВР/ЕВР


RXMM5


110


SI/ESI


RXMM6


111


DI/EDI


RXMM7


Теперь в исходном тексте программы можно использовать символические имена ХММ-регистров в качестве аргументов макрокоманд, моделирующих ХММ-команды.

Рассмотрим, как в файле iammx.inc описано макроопределение для моделирования ХММ-команды скалярной пересылки MOVSS.

:F3 OF 10 /г movss xrrnil. xmm2/m32 :F3 OF 11 /r movss xmm2/m32. xnrnl movss macro dst:req. src:req

XMMld_st_f3 opc_Mo«s. dst, src endm

Понимание структуры приведенного макроопределения не должно вызвать у читателя трудностей. Начать следует с того, что данная команда содержит вложенный вызов макрокоманды XMMld_st_f3, у которой две задачи — определить вариант сочетания операндов, после чего сформировать правильный код операции и подставить его на место соответствующих байтов в команде CMPXCHG. В результате этих действий команда CMPXCHG «превращается» в ХММ-команду MOVSS.


Содержание  Назад  Вперед