Исключение составляют сегменты FS и GS, сегментные регистры которых могут использоваться как дополнительные базовые регистры в адресных вычислениях. Эта особенность облегчает адресацию локальных данных потоков процесса и структур данных операционной системы.
Кодовый сегмент продолжает существовать в 64-разрядном режиме, но используются только некоторые ассоциированные с ним селекторы и дескрипторы, которые необходимы для установки режимов работы процессора, таких, как текущий уровень привилегий. Контекст регистров DS, ES, SS и всех ассоциированных дескрипторов игнорируется. Префиксы замены сегмента, ссылающиеся на эти сегменты, игнорируются, адресные вычисления со ссылками на них трактуются как сегмент с нулевой базой.
Как описано выше, размер операнда по умолчанию в 64-разрядном режиме для большинства команд - 32 бита. Исключение составляют две группы команд:
В 64-разрядном режиме ряд команд стал недействительным:
o команды работы с двоично-десятичной арифметикой (в двоично-десятичной арифметике при 64-разрядных вычислениях нет надобности): AAA, AAD, AAM, AAS, DAA, DAS;
o команды дальних переходов по абсолютным адресам (по причине того, что максимальный размер непосредственных значений остался 32 бит): CALL (far), JMP (far), RET (far);
o некоторые команды работы с неиспользуемыми в 64-разрядном режиме сегментными регистрами: LDS, LES, POP DS, POP ES, POP SS, PUSH DS, PUSH ES, PUSH SS, PUSH CS;
o ряд редко используемых, ненужных в 64-битном режиме или неоптимальных, с точки зрения исполнения, команд: BOUND, INTO, LAHF, POPA, POPAD, PUSHA, PUSHAD, SAHF, SALC;
o системные команды, ставшие недействительными в режиме long mode в целом: SYSENTER, SYSEXIT.
В дополнение к этому, как указывалось выше, были переопределены однобайтные команды INC и DEC для использования в качестве REX-префикса.
Освободившиеся коды команд могут быть использованы для очередного расширения системы команд x86 (в рамках x86-64), если в будущем возникнет необходимость этого.
В 64-разрядном режиме введена новая команда MOVSXD, расширяющая загружаемое 32-разрядное значение в 64-разрядный регистр. Напомню, беззнаковое расширение производится автоматически при загрузке операнда в младшую 32-битную половину регистра.
В 64-разрядном режиме расширены команды преобразования данных между XMM регистрами и регистрами общего назначения CVTSD2SI/CVTTSD2SI, CVTSS2SI/CVTTSS2SI, CVTSI2SD, CVTSI2SS. Когда размер операнда равен 64 битам, производится преобразование
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.