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 字节对齐的边界时才会错位。
- 字节永远不会错位。
处理单字节时,是否应考虑 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 字节对齐的边界时才会错位。
- 字节永远不会错位。