Вопрос о руководстве разработчика программного обеспечения Intel IA-32 - PullRequest
4 голосов
/ 19 апреля 2010

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

Ответы [ 2 ]

8 голосов
/ 19 апреля 2010

Инструкция добавления имеет несколько версий ... одна и та же мнемоника может быть закодирована в разные коды операций, в зависимости от того, какие операнды вы используете. (и чтобы ответить на ваш конкретный вопрос: инструкция «add r8, r8», вероятно, имеет 2 разных возможных кодировки, которые делают то же самое)

1 голос
/ 19 апреля 2010

Инструкция ADD имеет 9 различных типов кодирования, и два кода операции зарезервированы для:

Opcode: 00/r = ADD r/m8, r8
Opcode: 02/r = ADD r8, r/m8

В случае, если "ADD r8, r8" оба имеют некоторый эффект.

...