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

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

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

但另一方面,我发现像this这样的来源说大小是128位(32位是64位,64位是两倍),而其他人则认为大小是64位。但是,最后一个与微软有关,通过将每个字的大小定义为16位来混淆每个人,使事情变得更糟。

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

assembly 32bit-64bit cpu-architecture word
1个回答
3
投票

在x86术语/文档中,“word”是16位,因为x86是从16位8086演变而来的。在添加扩展时更改术语的含义会让人感到困惑,因为英特尔仍然需要记录16位模式和一切,以及像cwd(sign-extend word to dword)这样的指令助记符将术语烘焙到ISA中。

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

大多数其他64位ISA由32位ISA(AArch64,MIPS64,PowerPC64等)演变而来,或者从开始(Alpha)开始是64位,因此“字”在该上下文中意味着32位。

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

在我听说过的任何64位机器上,“字”并不代表64位。即使是DEC Alpha AXP,它从头开始设计为积极的64位,它使用32位指令字。 IIRC,手册调用一个32位的字。

能够使用单个指令将64位加载到整数寄存器中并不能使其成为“字大小”。比特和字大小没有特定的技术含义;大多数CPU内部有多种不同的大小。 (例如,自Haswell以来,英特尔的L2和L1d缓存之间的64字节总线,以及32字节的SIMD加载/存储。)

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


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

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