x86指令是如何存储在内存中的?

问题描述 投票:0回答:1

一条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 machine-code
1个回答
0
投票

x86 CPU 能够以字节级别对内存进行寻址。事实上,与某些体系结构不同,它本身甚至不需要从对齐地址获取非字节值 - 也就是说,它可以在奇数地址上加载/存储 WORD(2 字节)值,在非对齐地址上加载/存储 DWORD(4 字节)值。 -四个地址的倍数和非 8 个地址的倍数上的 QWORD(8 字节)值..

使用对齐的内存地址会更有效,但只有当你告诉 x86 这样做时,x86 才会出错。

© www.soinside.com 2019 - 2024. All rights reserved.