一条MOV指令占用内存多少字节?如果使用 4 字节地址,其中 1 字节用于移动命令本身,那么所有 40 位如何存储在内存中?
从此网站,https://www.cs.uaf.edu/2016/fall/cs301/lecture/09_28_machinecode.html
0: b8 05 00 00 00 mov eax,0x5
5: b9 05 00 00 00 mov ecx,0x5
a: ba 05 00 00 00 mov edx,0x5
我的印象是内存被分成连续的 2 或 4 字节地址位置,并且所有指令都存储在内存中,那么 5 字节指令如何适应?
x86 CPU 能够以字节级别对内存进行寻址。事实上,与某些体系结构不同,它本身甚至不需要从对齐地址获取非字节值 - 也就是说,它可以在奇数地址上加载/存储 WORD(2 字节)值,在非对齐地址上加载/存储 DWORD(4 字节)值。 -四个地址的倍数和非 8 个地址的倍数上的 QWORD(8 字节)值..
使用对齐的内存地址会更有效,但只有当你告诉 x86 这样做时,x86 才会出错。