@ollpu: да, хорошая ссылка. Но вы должны внимательно прочитать его, чтобы определить закономерности и три особых случая. Обновил этот ответ разделом, который я изначально написал для другого ответа.
ершенно новичок в двоичном кодировании x86-64. Я пытаюсь исправить старый код ассемблера.
В любом случае, я пытаюсь сделать что-то вроде этого (синтаксис Intel):
mov [rbp+rcx], al
Ассемблер в настоящее время генерирует это:
88 04 0D
но это не похоже на правильную инструкцию. Если я изменю базу в SIB-байте изrbp
в другой регистр, он работает нормально. Еще один способ заставить это работать - добавить однобайтовое смещение нуля (88 44 0D 00
). Похоже, это происходит с другими подобными кодами операций.
Почему я не могу использоватьrbp
там сmod=00
?