时间:2017-05-21 07:53:54 作者: 点击:次
在微软Build 2017开发者大会上,微软宣布ARM版Windows10将会支持x86软件。讨论之前,我们有必要首先回顾下64位Windows如何运行32位应用。

首先聊聊64位CPU,Intel和AMD早期采用了完全不同的策略。Intel为64位设计了全新的IA64架构。由于是原生的64位架构,性能更强,但是对传统X86应用兼容不佳。AMD则选择在原始32位X86指令集的基础上扩展64位X86-64指令集,并且将其命名为AMD64。在兼容原有X86的基础上,同时支持X86-64的扩展64位计算。由于市场对IA64架构反应冷淡,Intel最终按照AMD64的模式推出EM64T技术。类似于AMD64,EM64T包括两种工作模式,传统IA-32模式(传统32位模式)和IA-32e扩展模式(支持扩展64位计算)。最终,IA64逐步退出历史舞台,而采用AMD64/EM64T技术的处理器称为x86-64处理器,简称x64处理器。
对于64位Windows如何运行32位应用,选择有两种。第一,将32位系统库(C :\Windows\System32)移植,并直接在x64处理器(x86-64)上运行32位代码。第二,将32位系统库移植,转换为64位代码,随后在本机运行。WOW64(Windows on Windows64)选择了后者,首先将32位系统库Windows\System32移植至Windows\SysWOW64,随后通过动态二进制编译器,将32位数据类型重新编组为64位,调用约定则自动封装(X86-64对X86指令集的扩展)。最终,无论是32位应用还是64位应用,全部通过调用同样的NTDLL完成与内核的交互,确保了与内核和设备的交互都可以按本地硬件的速度进行。


WOW64系统库(Windows\SysWOW64,移植自32位System32)
Windows ARM运行32位x86应用的方案与64位Windows运行32位x86应用类似。不同是,为了降低二进制翻译器的开销,Windows ARM采用CHPE(Compiled Hybrid Portable Executable)技术,CHPE在X86 DLL中嵌入相同的ARM64代码。唯一的不同是,为了32位x86应用交互,数据类型仍使用32位。64位据类型的封装则在WOW抽象层进行。通过CHPE技术,X86 to ARM64二进制编译器得以高效进行。最终的过程则与64位运行32位应用完全一致,不再赘述。整个开销取决于应用程序代码、系统代码和内核融合的速度。最终,x86应用将获得非常接近于处理器原生性能的运行速度。

下一篇:Win10清理系统缓存方法
【Win10 装机版】秋叶系统32位下载 v2025
深度技术 Windows10 22H2 64位 专业版 V2
系统之家 Win10 32位专业版(免激活)v2025.1
系统之家 Win10 64位专业版(免激活)v2025.1
萝卜家园 Windows10 64位 优化精简版 V20
雨林木风 Windows10 32位 官方专业版 V20
雨林木风 Windows10 22H2 64位 V2025.12(
【Win10 纯净版】秋叶系统32位下载 v2025
【Win10 纯净版】秋叶系统64位下载 v2025
【Win10 装机版】秋叶系统64位下载 v2025
雨林木风 Windows10 22H2 64位 V2025.12(
雨林木风 Windows10 32位 官方专业版 V20
萝卜家园 Windows10 64位 优化精简版 V20
萝卜家园 Windows10 32位 优化精简版 V20
番茄花园Windows 10 专业版64位下载 v202
番茄花园Windows 10 专业版32位下载 v202
系统之家 Win10 64位专业版(免激活)v2025.1
系统之家 Win10 32位专业版(免激活)v2025.1
深度技术 Windows10 22H2 64位 专业版 V2
深度技术 Windows10 32位 专业版 V2025.1