Microsoft Windows Internals,第4版说:
英特尔x86处理器的体系结构定义了四个特权级别或环,以防止系统代码和数据被较小特权的代码无意或恶意覆盖。Windows将特权级别0(或环0)用于内核模式,并将特权级别3(或环3)用于用户模式。Windows仅使用两个级别的原因是,过去支持的某些硬件体系结构(例如Compaq Alpha和Silicon Graphics MIPS)仅实现了两个特权级别。
这是否意味着Windows曾经支持Alpha和MIPS?
Microsoft Windows Internals,第4版说:
英特尔x86处理器的体系结构定义了四个特权级别或环,以防止系统代码和数据被较小特权的代码无意或恶意覆盖。Windows将特权级别0(或环0)用于内核模式,并将特权级别3(或环3)用于用户模式。Windows仅使用两个级别的原因是,过去支持的某些硬件体系结构(例如Compaq Alpha和Silicon Graphics MIPS)仅实现了两个特权级别。
这是否意味着Windows曾经支持Alpha和MIPS?
Answers:
Microsoft 在1993年发布了Windows NT 3.1,这是Windows的第一个纯32位版本。
Windows NT被开发为多体系结构的操作系统。最初支持不同的CPU体系结构,包括IA-32,DEC Alpha,MIPS和PowerPC。
最初的想法是为每个平台建立一个通用的代码库,以及一个自定义的硬件抽象层(HAL)。但是,后来在Windows 2000中不再支持MIPS,Alpha和PowerPC 。
据我所知,Windows 10目前有8种基础架构(以及许多子变体),其中只有2种仍受支持。
x86(16位和32位变体,包括8086、80186、80286、80386、80486,Pentium,Pentium Pro,Pentium II,Pentium III,P4,Core,Core Duo,Core-I以及各种Celeron和Atom设计。)还包括各种兼容的AMD和NEC CPU。
MIPS,x86,ARM(感谢@ pjc50)。
(不确定CE是否曾经在PowerPC的Alpha上运行。)
x86,x64(或amd64,两个名称都使用),MIPS,Alpha,IA32,IA64,PowerPC。
在Windows 2000中,不再支持MIPS,Alpha和PowerPC。如果我没记错的话,Itanium是仅从Windows 2000开始的服务器,2008年和32位(IA32)分别从Windows 2000和Server 2012开始删除。当前,只有x86(仅限于某些特殊的上网本/平板电脑设备)和x64对于Windows 10仍然有效。
ARM,(也许还可以是MIPS吗?)
x64,ARM
多年来,Windows NT系列已经支持各种体系结构。
从3.1到4.0支持MIPS和Alpha(Alpha实际上使它成为Windows 2000的候选发行版,但并未使其成为最终版本)。PowerPC仅在4.0中可见。
Windows XP支持IA64(Itanium)。从Server 2003到Server 2008 R2的服务器行中也支持此功能。
微软已经将Windows移植到ARM,但是随后以各种方式人为地破坏了最终的系统。使用Windows RT(Windows 8的ARM版本)时,系统几乎完整,但是第三方桌面应用程序被锁定。随着Windows 10的各种ARM变体的出现,台式机似乎完全消失了。
Windows NT(作为Windows RT,WP8,WP8.1和Windows 10 Phones中的内核)支持ARM v7-A(32位)和ARM v8-A(64位)(Windows 10 for Phones当前位于除x86(包括x86-64(Windows AMD64),i386 / i586 / i686(Windows x86))之外,当前还具有Lumia 950 / 950XL和Qualcomm Snapdragon 810芯片组的体系结构。这是在其他答案(例如Alpha,MIPS,Itanium和PowerPC)中提到的历史上受支持的体系结构的补充。
如另一个答案所述,如果Win32桌面应用程序是针对x86体系结构进行编译的(通常如此),则它们无法在ARM的Windows NT上本地运行(即,在ARM仿真中没有x86)。但是,如@user 2284570所述,ARM本机可执行文件或动态库只有在它们(分发二进制文件)已由Microsoft进行数字签名的情况下,才能在Windows NT中为ARM运行,这会阻碍第三方开发人员对ARM本机应用程序的分发。 (例如,与使用x86或其他先前支持的体系结构的策略不同)。Microsoft选择不通过Windows上的ARM仿真在二进制级别上支持以x86为目标的Win32应用程序(台式Windows软件),因为仿真的性能代价将是巨大的,并且完全与ARM在紧凑的功率预算(低TDP)中的理想性能不符。 )。
注意:我在这里指的Windows API是Win32 本机 API,而不是.NET WINAPI(托管)版本。应用兼容性是指二进制级别的兼容性,而不是源代码级别的兼容性(如果不是很明显)。
但是,随着Windows RT平台和通用Windows平台(UWP)的出现,为Windows构建与体系结构无关的软件成为了可能(以前必须对软件进行仿真或重新编译才能在不同体系结构的Windows上运行)。 。