Вопрос о руководстве разработчика программного обеспечения Intel IA-32
Я изучаю руководство разработчика программного обеспечения Intel IA-32. В частности, я читаю следующее руководство: http://www.intel.com/Assets/PDF/manual/253666.pdf. Давайте возьмем для примера инструкцию ADD. На странице 79 написано, что вы можете добавить r8 (8-битный регистр) к r / m8 (8-битный регистр или ячейка памяти). В нескольких строках ниже также написано, что вы можете добавить r / m8 к r8. Вопрос: если я добавлю два 8-битных регистра, какую инструкцию я использую? Благодарю.
2 ответа
Инструкция add имеет несколько версий... одна и та же мнемоника может быть закодирована для разных кодов операций, в зависимости от того, какие операнды вы используете. (и чтобы ответить на ваш конкретный вопрос: инструкция "add r8,r8", вероятно, имеет 2 разных возможных кодировки, которые делают то же самое)
Инструкция ADD имеет 9 различных типов кодирования, и два кода операции зарезервированы для:
Opcode: 00/r = ADD r/m8, r8
Opcode: 02/r = ADD r8, r/m8
В случае "ADD r8, r8" оба имеют некоторый эффект.