我正在学习Kip Irvine的"Assembly Language for x86 Processors, sixth edition",并且非常喜欢它。
我刚刚在下面的段落中读到了NOP助记符:
有时编译器和汇编程序员使用它[NOP]将代码对齐到偶数地址边界。
给出的示例是:
00000000 66 8B C3 mov ax, bx
00000003 90 nop
00000004 8B D1 mov edx, ecx
该书中提到:
x86处理器被设计为可以更快地从双字地址加载代码和数据。
我的问题是:这个原因是因为针对该书所提到的x86处理器(32位),CPU的字长为32位,因此它可以一次性加载带有NOP指令的指令并处理它们吗?如果是这样,我假设一个具有四字字长的64位处理器会使用五个字节的假想代码加上一个nop来实现这一点?
最后,在编写代码后,我应该通过使用NOP进行调整以进行优化,还是像文本所暗示的那样,编译器(在我这种情况下,是MASM)会为我完成这项工作?