Я работаю через язык сборки Kip Irvine "для x86-процессоров, шестое издание" и действительно наслаждаюсь им.
Я только что прочитал о мнемонике NOP в следующем абзаце:
"It [NOP] is sometimes used by compilers and assemblers to align code to
even-address boundaries."
Приведенный пример:
00000000 66 8B C3 mov ax, bx
00000003 90 nop
00000004 8B D1 mov edx, ecx
В книге затем говорится:
"x86 processors are designed to load code and data more quickly from even
doubleword addresses."
Мой вопрос: причина в том, что причина в том, что для процессоров x86 в книге упоминается (32 бит), размер слова процессора составляет 32 бита, и поэтому он может вытягивать инструкции с помощью NOP и обрабатывать их в один конец? Если это так, я предполагаю, что 64-битный процессор с размером слова квадлового слова будет делать это с гипотетическим 5 байтами кода плюс nop?
Наконец, после того, как я напишу свой код, должен ли я пройти и правильно выполнить выравнивание с NOP, чтобы его оптимизировать, или компилятор (MASM, в моем случае), сделает это для меня, поскольку текст, по-видимому, подразумевает?
Спасибо,
Скотт