首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在32/64位操作系统中,一个字分别包含多少位?

在32/64位操作系统中,一个字分别包含多少位?
EN

Stack Overflow用户
提问于 2011-03-14 15:34:44
回答 3查看 72.6K关注 0票数 51

有谁有明确的答案吗?

有人说在32位操作系统上一个字就是16位,是真的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-14 15:47:09

“词”的概念有多种含义。这个问题有三个含义。

在软件/OS的CPU architectures

  • The“位大小”上下文中,
  • 通用术语“处理器字”与硬件

的“位大小”

  • 全大写术语WORD,意思是16位值-这是Windows "Win32“C语言

的一部分。

在描述Win32 WORD类型定义时,也会出现以下内容:

  • 英特尔/AMD指令集概念的“字”、“双字”和“四字”

在CPU体系结构的上下文中,通用术语“处理器字”

在普通/通用用法中,“处理器字”指的是处理器寄存器的大小。它还可以引用CPU指令的大小,或指针的大小(取决于确切的CPU体系结构)。在简单的情况下,32位处理器将具有32位“字”大小(和指针大小)。64位处理器将具有64位“字”大小(和指针大小)。

这里有a wikipedia article on this "processor word" concept,它详细介绍了这个术语的所有通用用法,以及几种当前和历史上的CPU架构的大小。

软件/OS的“位大小”与硬件的“位大小”

"64位“CPU和"64位”操作系统是运行"64位“软件所必需的。这一点可能很明显。

"64位软件“使用64位指令(例如,将64位数字相加,或同时将64位数据从处理器寄存器复制到RAM )。它还可以使用64位指针大小。这意味着,理论上它可以使用大约170亿to的RAM (16EB),而不是只能使用最多4 to的RAM (就像"32位软件“一样)。

"64位“x64/x86 CPU也可以运行"32位”(甚至"16位“)软件。它可以做到这一点,而不需要对代码进行任何更改,也不需要重新构建软件。这是因为所有旧的CPU指令仍然存在于新的CPU上,并且它们是向后兼容的。

严格地说,这些概念与“处理器字”的通用概念并不相同,但却密切相关。

注意:当您谈到更老的和更专业的处理器(特别是更老的视频游戏系统)时,这个概念开始变得稍微复杂一些,但问题实际上并不是关于这些,所以我不会详细说明。这些系统往往被称为"64位“或"8位”系统,但事实要复杂得多。请参阅the "processor word" wiki article I linked above或有关特定系统的文章。

问题的特定上下文- WORD,全部大写

问题中的大小写和具体大小(在32位操作系统上,WORD为16位)暗示了与通用术语“处理器字”不同的东西。

在传统的Windows编程(Windows)中,定义了一个名为WORD的宏,其大小为16位。当处理器是16位时,这是有意义的。但是,即使您为32位或64位目标编译包含此宏的代码,它仍将是16位。Win32接口中的DWORD为32位,QWORD为64位。

这是因为微软真的非常努力地在他们的Win32应用程序接口中支持向后兼容性,而不必对代码进行任何更改。在大多数情况下,您可以不加更改地编译Windows95时代的Win32示例,它们今天仍将以完全相同的方式工作。

微软很可能从英特尔(可能还有AMD)文档中继承了这个命名方案。

Intel/AMD指令集概念中的“字”、“双字”等

在英特尔文档中,“字”(Win32 WORD)为16位。一个“双字”(Win32 DWORD)是32位。“四字”(Win32 QWORD)是64位。相关的汇编指令名也反映了这种命名方案(例如,MMX添加压缩整数PADD指令:PADDWPADDDPADDQ)。

对于某些示例,您可以使用check this wikipedia article on the x86 instruction setthe Intel software development manuals

就“处理器字”的一般概念而言,这种命名方案并不一定有意义,因为这些概念只针对寄存器的一部分。但是,就为x86程序创建稳定的编程接口而言,它们是有意义的。这就是为什么你可以在"64位“操作系统上使用"32位”(和16位)程序的重要原因。

票数 73
EN

Stack Overflow用户

发布于 2019-06-15 17:48:36

没有明确的答案。

传统上,术语“字”是指处理器的寄存器和主数据路径的大小。根据这个定义,"word“在32位系统上应该是32位,在64位系统上是64位。

然而,当处理器系列被扩展以添加更宽的寄存器/操作模式时,这些处理器的制造商和用户有时继续使用“字”来指代原始处理器的字大小。当软件从一个处理器家族移植到另一个处理器家族时,也会发生同样的情况。

英特尔x86文档使用术语“word”²指代16位数。这种用法渗透到了最初为x86开发的软件环境中,比如windows API和Borland风格的pascal。

另一方面,arm文档使用术语“字”²来指代32位数量。

¹请参阅https://software.intel.com/sites/default/files/managed/a4/60/253665-sdm-vol-1.pdf中的4.1节

²请参阅https://static.docs.arm.com/ddi0487/db/DDI0487D_b_armv8_arm.pdf中的A1.4节

票数 3
EN

Stack Overflow用户

发布于 2015-12-11 19:10:33

一个字的大小是16位DWord(双字)是在编程时使用的32位字大小的两倍,但是...

操作系统中的名称字是显示在操作系统旁边的数字,因此如果它表示64位,那么在这种情况下,一个字(adres表示storege)是64位的

因此,这取决于您从编程或操作系统编号的角度来看待它

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5295903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档