Win10 ARM版為什么可以運(yùn)行x86程序?
感謝網(wǎng)友Star2011的投稿
在微軟Build 2017開發(fā)者大會(huì)上,微軟宣布ARM版Windows10將會(huì)支持x86軟件。討論之前,我們有必要首先回顧下64位Windows如何運(yùn)行32位應(yīng)用。

首先聊聊64位CPU,Intel和AMD早期采用了完全不同的策略。Intel為64位設(shè)計(jì)了全新的IA64架構(gòu)。由于是原生的64位架構(gòu),性能更強(qiáng),但是對(duì)傳統(tǒng)X86應(yīng)用兼容不佳。AMD則選擇在原始32位X86指令集的基礎(chǔ)上擴(kuò)展64位X86-64指令集,并且將其命名為AMD64。在兼容原有X86的基礎(chǔ)上,同時(shí)支持X86-64的擴(kuò)展64位計(jì)算。由于市場(chǎng)對(duì)IA64架構(gòu)反應(yīng)冷淡,Intel最終按照AMD64的模式推出EM64T技術(shù)。類似于AMD64,EM64T包括兩種工作模式,傳統(tǒng)IA-32模式(傳統(tǒng)32位模式)和IA-32e擴(kuò)展模式(支持?jǐn)U展64位計(jì)算)。最終,IA64逐步退出歷史舞臺(tái),而采用AMD64/EM64T技術(shù)的處理器稱為x86-64處理器,簡(jiǎn)稱x64處理器。
對(duì)于64位Windows如何運(yùn)行32位應(yīng)用,選擇有兩種。第一,將32位系統(tǒng)庫(kù)(C :\Windows\System32)移植,并直接在x64處理器(x86-64)上運(yùn)行32位代碼。第二,將32位系統(tǒng)庫(kù)移植,轉(zhuǎn)換為64位代碼,隨后在本機(jī)運(yùn)行。WOW64(Windows on Windows64)選擇了后者,首先將32位系統(tǒng)庫(kù)Windows\System32移植至Windows\SysWOW64,隨后通過(guò)動(dòng)態(tài)二進(jìn)制編譯器,將32位數(shù)據(jù)類型重新編組為64位,調(diào)用約定則自動(dòng)封裝(X86-64對(duì)X86指令集的擴(kuò)展)。最終,無(wú)論是32位應(yīng)用還是64位應(yīng)用,全部通過(guò)調(diào)用同樣的NTDLL完成與內(nèi)核的交互,確保了與內(nèi)核和設(shè)備的交互都可以按本地硬件的速度進(jìn)行。


WOW64系統(tǒng)庫(kù)(Windows\SysWOW64,移植自32位System32)
Windows ARM運(yùn)行32位x86應(yīng)用的方案與64位Windows運(yùn)行32位x86應(yīng)用類似。不同是,為了降低二進(jìn)制翻譯器的開銷,Windows ARM采用CHPE(Compiled Hybrid Portable Executable)技術(shù),CHPE在X86 DLL中嵌入相同的ARM64代碼。唯一的不同是,為了32位x86應(yīng)用交互,數(shù)據(jù)類型仍使用32位。64位據(jù)類型的封裝則在WOW抽象層進(jìn)行。通過(guò)CHPE技術(shù),X86 to ARM64二進(jìn)制編譯器得以高效進(jìn)行。最終的過(guò)程則與64位運(yùn)行32位應(yīng)用完全一致,不再贅述。整個(gè)開銷取決于應(yīng)用程序代碼、系統(tǒng)代碼和內(nèi)核融合的速度。最終,x86應(yīng)用將獲得非常接近于處理器原生性能的運(yùn)行速度。

相關(guān)文章

Win10四月更新KB5082200推送:修復(fù)登錄與遠(yuǎn)程桌面漏洞
微軟面向Win10推送KB5082200安全更新,版本號(hào)升至19045.7184/19044.7184,該更新修復(fù)了微軟賬戶登錄異常(誤報(bào)‘無(wú)網(wǎng)絡(luò)’)問(wèn)題,增強(qiáng)遠(yuǎn)程桌面安全性2026-04-15
Win10三月安全更新KB5078885發(fā)布:修復(fù)卡死/更新證書/提升部分顯卡穩(wěn)定
微軟為win10發(fā)布KB5078885累積更新,用戶安裝后版本號(hào)升至 Build 19045.7058,下面我們就來(lái)看看完整更新日志2026-03-11
微軟重推3月更新KB5075039:修復(fù)Win10恢復(fù)環(huán)境故障
微軟為win10重新推送KB5075039更新,修復(fù)了 Windows 恢復(fù)環(huán)境(WinRE)無(wú)法啟動(dòng)故障,詳細(xì)請(qǐng)看下文介紹2026-03-05
Win10如何使用鍵盤快捷鍵打開CMD? 鍵盤打開命令提示符的技巧
命令提示符(CMD)是一個(gè)非常實(shí)用的系統(tǒng)工具,它可以幫助我們執(zhí)行各種系統(tǒng)命令,比如修復(fù)網(wǎng)絡(luò)、檢測(cè)磁盤、管理文件等,下面我們就來(lái)看看使用鍵盤打開的技巧2026-03-03
Win10怎么消除屏幕周圍的黑框? Win10全屏黑邊解決方案
Win10屏幕周圍有一圈黑色的邊框能去掉嗎?當(dāng)然可以啊,我們可以通過(guò)調(diào)整一些設(shè)置輕松解決這個(gè)問(wèn)題,下面我們就來(lái)看看詳細(xì)解決辦法2026-03-03
首年420元! 微軟為更多舊版Windows10推出ESU付費(fèi)安全更新計(jì)劃
微軟近日宣布,將把擴(kuò)展安全更新(Extended Security Updates,簡(jiǎn)稱 ESU)計(jì)劃從 Windows 10 擴(kuò)展到更多即將結(jié)束支持周期的 Windows 版本,為仍在使用老舊系統(tǒng)的企業(yè)客戶提2026-02-24
Win10二月擴(kuò)展安全更新KB5075912發(fā)布: 修復(fù)6個(gè)在野零日漏洞
2026年2月10日,微軟面向Windows 10用戶推送KB5075912擴(kuò)展安全更新,本次更新共修復(fù)58個(gè)漏洞,含6個(gè)已被黑客利用的零日漏洞,微軟敦促用戶立即安裝2026-02-11
Win10一個(gè)不起眼的勾選讓虛擬機(jī)全線癱瘓:附解決辦法
根據(jù) Windows 10 2019 Enterprise LTSC 用戶反饋,運(yùn)行 VMware Workstation 17 虛擬化會(huì)拒絕啟動(dòng)虛擬機(jī),并彈出錯(cuò)誤提示框;而嘗試運(yùn)行 VirtualBox 后,宿主機(jī)會(huì)直接崩潰并2026-02-05
Win10更新補(bǔ)丁安裝失敗提示錯(cuò)誤代碼0x800f0922的解決辦法
在安裝 Windows 10 更新時(shí)遇到錯(cuò)誤代碼 0x800f0922,系統(tǒng)通常會(huì)顯示“我們無(wú)法更新系統(tǒng)保留磁碟分區(qū)”或直接中止安裝并在重啟后回滾,下面我們就來(lái)看看詳細(xì)解決辦法2026-01-29
部分用戶反饋:Win10 LTSB 2016更新失敗提示錯(cuò)誤代碼0x800F0922
部分 Win10 LTSB 2016 用戶反饋更新失敗,跳出 0x800F0922 故障,是通用 Windows 錯(cuò)誤 CBS_E_INSTALLERS_FAILED,并鎖定根源為注冊(cè)表中的異常殘留,下面我們就來(lái)看看解決辦2026-01-29


