将内存移动到 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]
那样快。
我想知道这样的代码是不是未对齐访问:
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]
那样快。