x86 英特尔汇编中的字节用 NOP 填充?

Byte in x86 intel assembly padded with NOPs?

处理单字节时,是否应考虑 4 字节对齐?

英特尔 x86 伪代码。在 4096 字节页面的开头:

PAGEADDRESS:
    01
    NOP NOP NOP <- 3 NOPs necessary?
    cmp byte ptr [PAGEADDRESS], 01
    je ADDRESS
    ...

cmp byte ptr [PAGEADDRESS], 01指令只处理PAGEADDRESS处的一个字节。后续字节填充什么并不重要。这些是 NOP 的事实不会影响 cmp 指令。

  • 内存中的双字应从 4 字节对齐的地址开始。
  • 单词只有在跨越这样一个 4 字节对齐的边界时才会错位。
  • 字节永远不会错位。