Тема 6

6. Формат на инструкциите в IA-32e режим. Използване на REX префикс.


страницата се нуждае от дописване/преглеждане


<< Тема 5 | Тема 7 >>

Формат на инструкциите в IA-32e(64 битов) режим

Това е формата на инструкциите в 64 битов режим:
untitled39.JPG
Тук може да опишете отново полетата които описахме в предната тема.

REX Prefix - 64 Bits

REX означава разширяване на регистрите (register extension).
Една от основните промени при 64 битовия режим е разрешението да се използват до 16 регистри (досега имахме само 8 регистъра за общо ползване).
REX префиксът учасва само в 64 битовия режим.

REX префиксът трябва да предшества opcode полето иначе се пренебрегва.

Обхвата на REX префикса е от 0x40 до 0x4f.
Това значи че в 64 бита той overrides инструкцията INC и DEC, но тези инстукции имат алтернативни кодове на операциите, така че не се тревожете.

Формат на REX префикса:
untitled40.JPG
REX - 0x4, отбелязва факта, че това е REX префикс.
Width - 0, размер на операнда по подразбиране. 1, 64 битов размер на операнда.
Тук е показано как REX.W флага се отразява на крайния размер на операнда на инструкцията:

Default Operating Mode Default Operand Size With 0x66 Prefix With REX.W
64-Bits 64 IGNORED 1
64-Bits 32 16 0
64-Bits 16 32 0

REX.W със стойност 0 не променя размера на операндите на инструкцията.
Но стойност 1 кара размера да бъде 64 битов.

Register field - 1 (high) битово разширение на ModR/M REG полето.
indeX field - 1 (high) битово разширение на SIB Index полето.
Base field - 1 (high) битово разширение на ModR/M или SIB Base полетата.

Адресиране с REX префикс

Тук са показани различните видове адресиране с REX префикса. Повечето от тях са изключително неестествени и няма да си правя труда да ги описвам.
Ако някой има желание да си ги опише сам, тъй като е малко вероятно да има пълно описание от лектора понеже и той ги прехвърли набързо.
untitled41.JPG
untitled42.JPG
untitled43.JPG
untitled44.JPG

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License