6. Формат на инструкциите в IA-32e режим. Използване на REX префикс.
страницата се нуждае от дописване/преглеждане
Формат на инструкциите в IA-32e(64 битов) режим
Това е формата на инструкциите в 64 битов режим:
Тук може да опишете отново полетата които описахме в предната тема.
REX Prefix - 64 Bits
REX означава разширяване на регистрите (register extension).
Една от основните промени при 64 битовия режим е разрешението да се използват до 16 регистри (досега имахме само 8 регистъра за общо ползване).
REX префиксът учасва само в 64 битовия режим.
REX префиксът трябва да предшества opcode полето иначе се пренебрегва.
Обхвата на REX префикса е от 0x40 до 0x4f.
Това значи че в 64 бита той overrides инструкцията INC и DEC, но тези инстукции имат алтернативни кодове на операциите, така че не се тревожете.
Формат на REX префикса:
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 префикса. Повечето от тях са изключително неестествени и няма да си правя труда да ги описвам.
Ако някой има желание да си ги опише сам, тъй като е малко вероятно да има пълно описание от лектора понеже и той ги прехвърли набързо.





