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



         

Поддержка ХММ-команд в файле iaxmm.inc - часть 2


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.




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