Почему операнд 1 в байте modr/m меняется в зависимости от режима декодирования

Я пытаюсь понять, почему инструкция меняется с add[eax],al на add[rax],al при смене режима декодирования с x86 на x64.

Байты инструкции: 00 00.

Я думаю, это может быть потому, что он используется для указания места в памяти, но я не смог найти ничего, что могло бы доказать это.


58
1

Ответ:

Решено

Это связано с тем, что размер адреса по умолчанию составляет 64 бита в 64-битном режиме и 32 бита в 32-битном режиме.

Вы можете применить префикс переопределения размера адреса 67, чтобы выбрать размер адреса 32 бита в 64-битных модах, однако 64-битный размер адреса недоступен за пределами 64-битного режима.