Я изучал руководство разработчика по архитектуре x86, пытаясь очистить мои обратные инженерные навыки. Я знаю, что архитектура сложна и обратно совместима с предыдущими поколениями. С более новыми поколениями некоторые из старых частей документации остаются в стороне. Но один из тревожных объяснений и кривотолков была инструкция, похожая на этот:x86 Декодирование команд OpCode
80 /2 ib
Так инструкции, основанная на следующий 80
OpCode будет сопровождаться/RM/REG байтами MOD. Один из побочных эффектов, связанных с игнорированием старого контента, я не имел понятия о различных версиях MOD/RM/REG байт. Но я всегда считал, что это была разница, потому что архитектурные корни были 8/16-бит. К счастью, я наткнулся на вскрытие байт MOD/RM/REG во время первоначального внедрения архитектуры.
Так, как указано выше, за которым следует цифра прямой косой черты, указано, что значение Octal будет содержаться в смещении RM байта MOD/RM/REG, будет значением 2
.
Мой актуальный вопрос (ы) являются следующим:
компенсированы ли MOD в MOD/RM/REG байты принимают все режимы адресации в текущем состоянии или существует какое-либо ограничение, налагаемое? С другой стороны, кто-нибудь знает, почему цифра указана с помощью /2
? Было бы основанием полагать, что более низкие значения использовались в старших поколениях ISA и, таким образом, сохраняются для обратной совместимости.
'/ 2' относится к значению поля' reg' байта ModRM. Поле 'reg' имеет размер 3 бита (бит 3..5). В AMD manual Vol 3: '/ n Поле регистров ModRM-байта или базовое поле SIB-байта, где n - значение между нулем (двоичное число) и 7 (двоичное число 111).' 'Ib' означает немедленный байт.В 16-битовом коде '80 00 00' есть' add byte [bx + si], 0x0', '80 08 00' is 'или byte [bx + si], 0x0', **' 80 10 00' is ' adc byte [bx + si], 0x0' **, '80 18 00' is' sbb byte [bx + si], 0x0', '80 20 00' is 'и byte [bx + si], 0x0',' 80 28 00 'is' sub byte [bx + si], 0x0', '80 30 00' является' xor byte [bx + si], 0x0' и '80 38 00' является' cmp byte [bx + si] , 0x0'. – nrz
Возможно, вы захотите ознакомиться с руководствами AMD и Intel. [Руководства AMD] (http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/) [прямая ссылка на тома AMD 3 pdf] (http: //amd-dev.wpengine.netdna- cdn.com/wordpress/media/2008/10/24594_APM_v3.pdf) [Руководства Intel] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) [прямая ссылка на объединенные тома Intel pdf] (http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual -325462.pdf). – nrz