将内存移动到 32 位寄存器有时可​​以在 NASM 中进行未对齐访问吗?

Can moving memory to 32 bit register be unaligned access in NASM sometimes?

我想知道这样的代码是不是未对齐访问:

section .text
 global _start
_start:
        mov eax, [arr + 1]

section .data
arr: db 1, 2, 3, 4, 5, 6, 7

典型的节对齐是 1000h,至少在 PortableExecutables 中是这样。当您的程序被链接并加载到内存中时,section .data 的虚拟地址将对齐,因此第一个数据 arr 也会对齐。

从地址 mov eax, [arr + 1] 加载一个寄存器当然是未对齐的,但无论如何它都可以工作,虽然不如 mov eax, [arr] 那样快。