Я читал руководство Intel по вычислению адресов в 64-битном режиме. Предположим, у нас 64-битный режим, размер адреса по умолчанию - 64 бит. Предположим также, что рассматриваемой инструкции предшествует префикс переопределения размера адреса, поэтому размер адреса становится 32-битным.
Теперь представьте, что инструкция кодирует операнд памяти с адресом, указанным в регистре с номером 0 (rax / eax / ax ...).
Теперь то, что я не совсем понимаю, смотрит ли ЦП только на значение eax и внутренне расширяет его с помощью нуля, чтобы сформировать «собственный» 64-битный адрес, или он смотрит на все значение rax и усекает его до допустимого 32-битного диапазона (например, , rax содержит что-то вроде 5Gb, и CPU сокращает его до максимального 32-битного адреса).