为啥 Windows 32 位称为 Windows x86 而不是 Windows x32? [关闭]
Posted
技术标签:
【中文标题】为啥 Windows 32 位称为 Windows x86 而不是 Windows x32? [关闭]【英文标题】:Why is Windows 32-bit called Windows x86 and not Windows x32? [closed]为什么 Windows 32 位称为 Windows x86 而不是 Windows x32? [关闭] 【发布时间】:2015-07-10 13:12:55 【问题描述】:Windows 操作系统可以是 32 位或 64 位。 64 位 版本称为Windows x64,而32 位 版本称为Windows x86。为什么不叫Windows x32?是什么原因?
【问题讨论】:
英特尔处理器家族的名称。 已经在这里回答和讨论:serverfault.com/questions/188177/… 因为时间机器不是真实的。 x32 一词直到 x64 得到完善才出现。过了一会儿,专有名称是 amd64 或 x86_64。它仍然没有描述架构,它是an abi。 @Hans:它不是描述ISA吗? 总是迷惑人? 【参考方案1】:x86 是构建它运行的架构的名称(该名称来自一系列旧的 Intel 处理器,其名称均以 86 结尾,其中第一个是 8086)。虽然 x86 最初是 16 位架构,但今天使用的版本是 32 位扩展。
x64 实际上更准确地说是“x86-64”——x86 的 64 位扩展。它是 AMD 在 Intel 的许可下开发的,这可能解释了命名法上的差异(以及两种架构在很长一段时间内同时使用的事实,因此标记区别很重要)。不过,考虑到所有因素,只说 x64 更容易,所以我们坚持使用它。
【讨论】:
请注意,您通常只能在 Windows 世界中找到术语“x64”。 Linux 使用x86-64
或amd64
。 (而i386
或i686
表示32 位x86。x86 很可能表示所有x86 机器,而不是具体的32 位x86。还要注意the Linux x32
ABI 是64 位模式下的32 位指针。 )
另请参阅The most correct way to refer to 32-bit and 64-bit versions of programs,了解用于指代 x86 的各种版本/扩展的各种名称的概述,包括 x86-64。【参考方案2】:
作为 PC 架构核心的英特尔 CPU 过去的型号以数字 86 结尾。有 8086、80286、80386、80486、80586(最初的 Pentium)、80686(Pentium Pro)......能够在其中一个 CPU 上运行的操作系统(DOS、Windows)很可能会在该系列的另一个 CPU 上运行,尽管速度较慢或更快。以前也有来自其他制造商的竞争 CPU 架构,与 Intel 不兼容,例如 SPARC、MIPS、ARM、Alpha。在比较架构时,人们会使用 x86 名称来指代 Intel 的 16/32 位 CPU 主线。因此,您将拥有应用程序的 x86 版本、应用程序的 Alpha 版本或 SPARC 版本...
然后营销问题优先于工程,英特尔开始为其 CPU 提供非数字名称(Pentium2、Core2),并且技术型号被隐藏在技术规格中。
当 AMD 推出经典 Intel CPU 指令集的 64 位扩展时,需要重新编译应用程序和操作系统以利用新功能,这使得它们与以前的 Intel CPU 型号不兼容。 AMD 最初为这个新平台使用了 AMD64 的名称,但后来 Intel 开始制造与 AMD64 兼容的芯片(如 Intel 64),并且它被重命名为 x64,因为它不再是 AMD 的专有产品。
虽然 x86 和 x64 平台都以 x 开头,但 x 代表的不是同一个东西,一个是 CPU 型号(286、386...),另一个是制造商(AMD64、Intel64 )。
【讨论】:
【参考方案3】:当处理器被发明时,称为 8086。它最初是为 16 位机器引入的,后来它被转换为 32 位机器。由于其在架构和尺寸方面的设计质量和受欢迎程度,它被扩展并在型号末尾保留了 86,这就是为什么根据处理器系列将 Windows x86 称为 x86 的原因。
【讨论】:
以上是关于为啥 Windows 32 位称为 Windows x86 而不是 Windows x32? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Windows Vista 64 位默认使用 32 位 cmd.exe? (特定于机器)
为啥我在 IA32_LSTAR MSR 上使用内核调试器在 64 位 Windows 上为 SYSCALL 设置断点时会出现 DoubleFault? (KVASCODE 部分)
为啥我不能在 64 位机器上正确读取 HKCU 中的 32 位注册表值?
为啥在Windows XP上用VMware 9装Mac OS X 10.7,装好了却说“客户机操作系统不支持Mac OS X服务器”。