1 Byte = 8bits
1 Halfword = 16bits = 2 Bytes
1 Word = 32 bits = 4 Bytes
1 Long = 64 bits = 8 Bytes
但随后在x86汇编(AT & T语法),我使用MOVW(移动字)的半字移动到一个16位寄存器,MOVL(移动长)到字移动到一个32位寄存器。我在运行32位操作系统的64位操作系统上使用虚拟机。奇怪的数据大小?
我在做什么错?
这是否意味着在OS中我的虚拟机上运行的大小为:
1 Byte = 4bits
1 Halfword = 8bits = 2 Bytes
1 Word = 16 bits = 4 Bytes
1 Long = 32 bits = 8 Bytes
我查了GDB的大小,我认为他们是:
1 Byte = 8bits
1 Halfword = 16bits = 2 Bytes
1 Word = 32 bits = 4 Bytes
1 Long = 64 bits = 8 Bytes
请参阅Peter Cordes的答案。使用Halfword的“GDB”列表对于Intel和Compatible来说没有任何意义。因此,如果您有16位,32位或64位处理器,则无关紧要。英特尔没有“搞砸”。我想你是在想机器的话。这些在这里没有作用。 BYTE,WORD等具有固定的含义和大小。 –
是的,你是对的我认为一个32位的PC应该有一个32位的单词(读下面的引号)。我所说的“搞砸”是因为他们选择了16位,所以它与一些旧处理器兼容,但我想我错了。谢谢。 “处理器中的大多数寄存器通常是字大小的,在单个操作中可以在工作存储器中传输的最大数据量是许多(不是全部)架构中的一个字。” - 在维基百科关于词 – SadSeven
ISTM你正在混淆“机器词”与WORD类型。 –