Для всех процессоров есть нечто вроде «пространства опкодов». Например, если ЦП использовал 8-битные коды операций, тогда был бы макс. из 256 инструкций, которые он мог бы иметь. Чем больше кодов операций, тем больше опкодов вы можете иметь, но тем сложнее их быстро и быстро их декодировать.
80x86 - относительно старая архитектура. Он начинался со скромного пространства опкодов, состоящего в основном из 1-байтового и 2-байтового кодов операций. Каждый раз, когда производители процессоров добавляют новую функцию, она занимает больше опкодов из пространства опкодов. У них кончились опкоды. Они быстро выбежали.
Чтобы обойти это, они начали делать такие вещи, как добавление эвакуационных кодов и префиксов для искусственного расширения пространства опкодов. Например, для недавних инструкций по AVX вы просматриваете префикс VEX, за которым следует старый/рециркулированный код (например, 0xF0), за которым следует префикс размера старого/переработанного адреса/операнда (например, 0x66), за которым следуют еще 4 байта , Это некрасиво.
В то же время существуют старые инструкции, которые редко используются сейчас (AAD, AAM и т. Д.) И инструкции с несколькими/резервными кодами операций (INC/DEC), которые потребляют ценные «1-байтные» коды операций. Они не могут/не могут быть полностью удалены из-за обратной совместимости.
Однако; когда разрабатывался 64-разрядный бит, просто не было 64-битного кода, который бы совместим - обратная совместимость не имела значения. 1-байтовые коды операций, потребляемые «не очень важными» инструкциями, могут быть переработаны; делая эти инструкции недействительными в 64-битном коде (но освобождая некоторые из ценных 1-байтных кодов операций).
Большинство этих 1-байтовых кодов операций (вся 1-байтная группа INC/DEC, если я правильно помню) были немедленно переработаны для префикса REX, необходимого для поддержки 64-битных операндов. Некоторые из них не были и стали «бесплатными для будущих расширений» (с ограничением на то, что расширение может работать только в 64-битном коде, поскольку эти инструкции все еще действительны в 16-битном и 32-битном коде).
Регистр сегментов с нажатием/записью просто не имеет смысла в режиме x64. –