Разница между abbr E и abbr M в Руководстве разработчика программного обеспечения IA-32 2C - PullRequest
0 голосов
/ 24 февраля 2012

Я декодирую представление шестнадцатеричного кода X86 обратно в сборку.Раздел A.2.1 ISA manual 2C содержит коды аббревиатур для метода адресации (стр. A-2 Vol. 2C).Может кто-нибудь объяснить мне, в чем разница между abbr E и abbr M?

E - байт ModR / M следует за кодом операции и указывает операнд.Операндом является регистр общего назначения или адрес памяти.Если это адрес памяти, адрес вычисляется из регистра сегмента и любого из следующих значений: базовый регистр, индексный регистр, коэффициент масштабирования, смещение.

M - байт ModR / Mможет относиться только к памяти (например, BOUND, LES, LDS, LSS, LFS, LGS, CMPXCHG8B).

1 Ответ

1 голос
/ 24 февраля 2012

E может разрешить любой источник или назначение, находящиеся в памяти или регистре (например, MOV EAX, DWORD PTR DS:[ESI] или MOV EAX, ESI), где M разрешает только адреса памяти, что означает, что он не может адресовать регистр, но он может адресовать память на который указывает значение в регистре (CMPXCHG8b ESI недействительно, где CMPXCHG8b QWORD PTR DS:[ESI] допустимо).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...