Декодирование приставки Rex для архитектуры Intel x64
В документации Intel "Руководство разработчика программного обеспечения для архитектуры, том 2А" в Таблице 2-4 показана значимость битов префикса REX.
Может кто-нибудь объяснить мне, как интерпретировать, когда W=0? Это говорит 0 = Operand size determined by CS.D
но я не понимаю что CS.D
средства.
1 ответ
CS.D
обозначает поле "размер операции по умолчанию" дескриптора сегмента, связанного с текущим сегментом кода. Он контролирует размер адресов и операндов по умолчанию и может быть установлен по умолчанию на 16 или 32-битный размер операнда.
В 64-битном длинном режиме (CS.L=1) единственная допустимая настройка для CS.D = 32-битная, поэтому префикс REX с очищенным битом W оставляет размер операнда по умолчанию равным 32-битному. (Префикс размера операнда может переопределить размер операнда до 16).
Размер адреса по умолчанию в длинном режиме - 64-разрядный (префикс размера адреса в инструкции переопределяет его на 32).
Дескрипторы сегментов подробно описаны в Томе 3A - Руководство по системному программированию, часть 1, глава 3.4.5 Дескрипторы сегментов.
Эффекты D
поля также обсуждаются в Томе 1 - Базовая архитектура, глава 3.6 Атрибуты размера операнда и размера адреса.