在64位计算机上,QWORD的大小是多少?

时间:2019-03-30 10:58:47

标签: assembly 32bit-64bit cpu-architecture word

我目前正在寻找上述问题的答案。到目前为止,我发现有人说,字长是指处理器寄存器的大小,这将在64位计算机上建议字长为64位,因此QWORD(4 *字)长为256位。

但是另一方面,我发现类似this的消息源说大小为128位(32位为64位,而64位为两倍),而即使如此,其他人仍建议大小为64位位。但是最后一个与微软有某种联系,即通过将一个单词的大小定义为16位来混淆所有人,从而使情况变得更糟。

也许有人可以解决我的困惑并启发我这个话题。

1 个答案:

答案 0 :(得分:3)

在x86术语/文档中,“单词”为16位,因为x86是从16位8086演变而来的。随着扩展的增加而更改术语的含义将令人困惑,因为英特尔仍然必须记录16位模式及其所有内容,而指令助记符(如cwd(将符号扩展到dword的符号)将术语引入ISA。

  • x86字= 2字节
  • x86 dword = 4字节(双字)
  • x86 qword = 8字节(四字)

大多数其他64位ISA是从32位ISA演化而来的(AArch64,MIPS64,PowerPC64等),或者从一开始就是64位(Alpha),所以“字”在该上下文中表示32位。

  • 32位字= 4字节
  • dword = 8字节(双字),例如MIPS daddu是64位整数加
  • qword = 16字节(四字),如果完全支持的话。

在我听说过的任何64位计算机上,“单词”并不表示64位。即使是完全从根本上设计为64位的DEC Alpha AXP,也使用32位指令字。 IIRC,手册中称一个字为32位。

能够使用一条指令将64位加载到整数寄存器中并不会使“字长”变大。 位数和字号没有明确的技术含义;大多数CPU内部都有多个不同的大小。 (例如,自Haswell以来,Intel的L2和L1d之间的64个 byte 总线以及32字节的SIMD加载/存储。)

因此,基本上要由CPU供应商的文档作者来选择对ISA意味着什么“字”(以及dword / qword)。


有趣的事实:SPARC64谈论的是“短字”(32位)与“长字”(64位),而不是字/双字。我不知道在64位SPARC文档中,没有任何限定符的“单词”是否具有任何意义。