x64 MOV 32-битный непосредственный в 64-битный регистр

Вторая инструкция на этой странице в разделе кода:

https://i.imgur.com/LIImg.jpg

Выглядит так: MOV r9d, 0, Закодировано так: 41 B9 00 00 00 00

Единственная проблема... Там нет MOV инструкция в руководстве Intel x64, которая берет 4-х байтовый файл и помещает его в 64-битный регистр.

Это инструкции из руководства Intel:

B0+ rb          MOV r8, imm8 Move imm8 to r8.
REX + B0+ rb    MOV r8***, imm8 Move imm8 to r8.
B8+ rw          MOV r16, imm16 Move imm16 to r16.
B8+ rd          MOV r32, imm32 Move imm32 to r32.
REX.W + B8+ rd  MOV r64, imm64 OI Valid N.E. Move imm64 to r64.

Инструкция, кажется, работает, но как?

1 ответ

Решение

r9d не является 64-битным регистром. Это младшие 32 бита r9 регистр, так как это 32-битный регистр.

Другие вопросы по тегам