Допустим ли вызов [edi 0x21] в наборе инструкций x86-64?

# #assembly #x86 #x86-64 #disassembly

Вопрос:

call [edi 0x21] Допустимо ли для набора инструкций x86-64? Согласно руководству Intel, FF /2 действителен только для r/m64, но это онлайн-кодер/декодер, который я тестирую с помощью выходов 67 ff 57 21 . Является ли инструмент, который я использую, неправильным, или мое понимание неверно?

Ответ №1:

Размер адреса и размер операнда независимы. Даже если вы используете 32-разрядный адрес, операнд памяти все равно может иметь 64-разрядный размер. Так что да, call [edi 0x21] это допустимая инструкция 64-битного режима, и кодировка 67 ff 57 21 тоже правильная.