Как закодировать операнды для подчиненного 83/5 кода операции, например, sub edx, 0x3a? - PullRequest
0 голосов
/ 23 марта 2019

У меня проблемы с просмотром инструкций по сборке, таких как синтаксис GAS

subl $0x3a, %edx

, а затем возможность использовать руководство Intel для ручного создания соответствующего машинного кода, который оказывается

83EA3A

Я понимаю, что захожу в руководстве по Intel на страницу вычитания и вижу, что мы вычитаем моментальный из регистра, который запустит нас с кодом операции 83/5 ib согласно руководству Intel, но я немного растерялся, куда идти отсюда.

1 Ответ

2 голосов
/ 23 марта 2019

За кодом операции (83 16 ) следует байт ModR / M./ 5 (или / 101 2 ) - это поле Reg / Opcode байта.Поля Mod (11 2 ) и R / M (010 2 ) определяют регистр (edx).Следовательно: 11.101.010 2 = EA 16 .

См .:

  • 2.1 ФОРМАТ ИНСТРУКЦИИ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА, РЕЖИМА РЕАЛЬНОГО АДРЕСАИ VIRTUAL-8086 РЕЖИМ тома 2 Intel® 64 и IA-32 Архитектура Руководство разработчика программного обеспечения
  • В частности, Таблица 2-2.32-битные адресационные формы с байтом ModR / M
...