在微軟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應用將獲得非常接近於處理器原生性能的運行速度。

相關資訊
最新熱門應用
光速寫作軟件安卓版
辦公學習59.73M
下載
中藥材網官網安卓最新版
醫療健康2.4M
下載
駕考寶典極速版安卓app
辦公學習189.48M
下載
貨拉拉搬家小哥app安卓版
生活實用146.38M
下載
烘焙幫app安卓最新版
生活實用22.0M
下載
喬安智聯攝像頭app安卓版
生活實用131.5M
下載
駕考寶典科目四app安卓版
辦公學習191.55M
下載
九號出行
旅行交通133.3M
下載
全國潮汐表官方app最新
生活實用31.83M
下載
閃送一對一急送app安卓版
生活實用50.61M
下載