Win10 ARM版为什么可以运行x86程序?
感谢网友Star2011的投稿
在微软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四月更新KB5082200推送:修复登录与远程桌面漏洞
微软面向Win10推送KB5082200安全更新,版本号升至19045.7184/19044.7184,该更新修复了微软账户登录异常(误报‘无网络’)问题,增强远程桌面安全性2026-04-15
Win10三月安全更新KB5078885发布:修复卡死/更新证书/提升部分显卡稳定
微软为win10发布KB5078885累积更新,用户安装后版本号升至 Build 19045.7058,下面我们就来看看完整更新日志2026-03-11
微软重推3月更新KB5075039:修复Win10恢复环境故障
微软为win10重新推送KB5075039更新,修复了 Windows 恢复环境(WinRE)无法启动故障,详细请看下文介绍2026-03-05
Win10如何使用键盘快捷键打开CMD? 键盘打开命令提示符的技巧
命令提示符(CMD)是一个非常实用的系统工具,它可以帮助我们执行各种系统命令,比如修复网络、检测磁盘、管理文件等,下面我们就来看看使用键盘打开的技巧2026-03-03
Win10怎么消除屏幕周围的黑框? Win10全屏黑边解决方案
Win10屏幕周围有一圈黑色的边框能去掉吗?当然可以啊,我们可以通过调整一些设置轻松解决这个问题,下面我们就来看看详细解决办法2026-03-03
首年420元! 微软为更多旧版Windows10推出ESU付费安全更新计划
微软近日宣布,将把扩展安全更新(Extended Security Updates,简称 ESU)计划从 Windows 10 扩展到更多即将结束支持周期的 Windows 版本,为仍在使用老旧系统的企业客户提2026-02-24
Win10二月扩展安全更新KB5075912发布: 修复6个在野零日漏洞
2026年2月10日,微软面向Windows 10用户推送KB5075912扩展安全更新,本次更新共修复58个漏洞,含6个已被黑客利用的零日漏洞,微软敦促用户立即安装2026-02-11
根据 Windows 10 2019 Enterprise LTSC 用户反馈,运行 VMware Workstation 17 虚拟化会拒绝启动虚拟机,并弹出错误提示框;而尝试运行 VirtualBox 后,宿主机会直接崩溃并2026-02-05
Win10更新补丁安装失败提示错误代码0x800f0922的解决办法
在安装 Windows 10 更新时遇到错误代码 0x800f0922,系统通常会显示“我们无法更新系统保留磁碟分區”或直接中止安装并在重启后回滚,下面我们就来看看详细解决办法2026-01-29
部分用户反馈:Win10 LTSB 2016更新失败提示错误代码0x800F0922
部分 Win10 LTSB 2016 用户反馈更新失败,跳出 0x800F0922 故障,是通用 Windows 错误 CBS_E_INSTALLERS_FAILED,并锁定根源为注册表中的异常残留,下面我们就来看看解决办2026-01-29



最新评论