Win10 ARM版為什么可以運(yùn)行x86程序?

感謝網(wǎng)友Star2011的投稿
在微軟Build 2017開(kāi)發(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)制翻譯器的開(kāi)銷,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è)開(kāi)銷取決于應(yīng)用程序代碼、系統(tǒng)代碼和內(nèi)核融合的速度。最終,x86應(yīng)用將獲得非常接近于處理器原生性能的運(yùn)行速度。
相關(guān)文章
Win10/Win11如何更改系統(tǒng)默認(rèn)截圖/錄屏保存路徑?
Win10/Win11系統(tǒng)截圖和錄屏后都是直接保存的,想要看看截圖和錄屏默認(rèn)保存路徑,該怎么操作呢?下面我們就來(lái)看看詳細(xì)教程2025-04-22Win10多余本地賬戶是刪除還是禁用? Windows刪除賬戶和禁用賬戶的區(qū)別
windows10系統(tǒng)中有很多不用的本地賬戶,是刪除賬戶還是禁用賬戶好呢?禁用賬戶與刪除賬戶是兩個(gè)不同的概念,下面我們就來(lái)看看區(qū)別介紹2025-04-18Win10 RP 預(yù)覽版 Build 19045.5794今日發(fā)布:附KB5055612更新日志
微軟為Windows 10今日推送了KB5055612,用戶安裝后版本將升至22H2 Build 19045.5794,這個(gè)版本只有兩項(xiàng)錯(cuò)誤修復(fù),詳細(xì)請(qǐng)看下文介紹2025-04-16無(wú)需理會(huì)! Win10 WinRE KB5057589更新導(dǎo)致0x80070643錯(cuò)誤
部分用戶在安裝 4 月 8 日發(fā)布的 WinRE 安全更新 KB5057589 后,可能會(huì)再次遇到 0x80070643 錯(cuò)誤,微軟官方建議用戶忽略 0x80070643 錯(cuò)誤2025-04-14Win10 四月累積更新KB5055518發(fā)布: 修復(fù)打印亂碼等問(wèn)題
微軟在4月補(bǔ)丁星期二活動(dòng)中為Windows 10用戶推送了KB5055518累積更新,此次更新包含9項(xiàng)改進(jìn),涉及夏令時(shí)調(diào)整、新增Noto CJK字體支持,并修復(fù)了打印亂碼、遠(yuǎn)程桌面工具故障2025-04-09微軟計(jì)劃在Win10 四月更新將移除任務(wù)欄日歷彈窗時(shí)間秒數(shù)顯示
微軟將在2025年4月8日發(fā)布的Windows 10更新中,移除任務(wù)欄日歷彈窗的秒數(shù)顯示功能,實(shí)際上,這一調(diào)整已在3月的可選更新KB5053643中實(shí)施2025-04-08禁用索引會(huì)怎么樣? Win10禁用索引器回退的方法
一般情況下,Win10系統(tǒng)的搜索功能都是建立在索引的基礎(chǔ)上的,因此如果想要加快搜索索引速度,就想要禁用索引器回退設(shè)置,該怎么設(shè)置呢?詳細(xì)請(qǐng)看下文介紹2025-04-01Win10 22H2 預(yù)覽版19045.5679今日推送:附KB5053643完整更新日志
微軟今日向Windows 10 22H2用戶推送了可選更新KB5053643,安裝后系統(tǒng)版本號(hào)將升級(jí)至19045.5679,下面我們就來(lái)看看這個(gè)版本更新內(nèi)容2025-03-26怎么禁用光驅(qū)刻錄功能? Win10禁用CD刻錄功能的技巧
怎么設(shè)置禁止用戶使用電腦光驅(qū)刻錄功能呢?對(duì)于局域網(wǎng)電腦而言,為了保護(hù)電腦文件的安全,我們需要限制用戶對(duì)電腦設(shè)備的訪問(wèn)操作,特別是禁止用戶在非授權(quán)情況下對(duì)電腦設(shè)備2025-03-24Win10三月累積更新KB5053606惹禍:安裝失敗/系統(tǒng)卡頓/打印機(jī)故障
Win10三月累積更新 KB5053606 存在 BUG,有用戶反饋安裝失敗、系統(tǒng)卡頓、打印機(jī)故障等問(wèn)題,不僅影響個(gè)人用戶,還波及企業(yè)客戶2025-03-24