早在2021年6月,微軟就宣佈適用於Windows11的ARM64EC。官方稱之為一種使現有x64應用程序在ARM平臺上獲得近乎原生性能的新方法——即便你調用尚不支持該腳骨的插件和依賴項。轉眼一年過去,ARM64EC終於迎來面向Windows11的更完整支持。
(來自:C++ Team Blogs)
據悉,ARM64EC 的“EC”,是“仿真兼容”(Emulation Compatible)的縮寫。
其設想是提供一個二進制接口(ABI),以便開發者使用 x64 和 ARM 代碼構建應用程序。
這意味著 ARM 代碼可在 Windows 11 設備上原生運行,而其它特定於 x64 的代碼則會通過仿真方式運行。
截圖(來自:Windows Blogs)
作為 Windows on ARM 項目的一個重要裡程碑,ARM64EC ABI 與 ARM64 ABI 之間的差異,主要體現在如下方面:
ARN64EC ABI 具有與 x64 代碼的二進制兼容特性,且遵循著既有的 x64 軟件約定。
其中包括調用約定(calling convention)、堆棧使用(stack usage),以及數據對齊(data alignment)。
這使得 ARM64EC 和 x64 代碼具有可互操作的特性,基於前者構建的應用程序可能包含 x64 代碼,但也不都如此。
因為 ARM64EC 本身有一套完整、一流的的視窗二進制接口(Windows ABI)。
經過一年多的開發,微軟現認為 ABI 已足夠穩定,能夠從實驗階段過渡到通用發佈(GA)。
隨著 ARM64EC 17.3 版本的推出,其能夠為開發者帶來諸多益處。
比如開發者能夠逐步更新他們的代碼,讓 x64 和 ARM 功能同時運行,而無需費心確保他們的整個代碼庫都具有與 ARM 平臺的兼容性。
當然,在 Windows on ARM 設備上,還是原生 ARM 代碼的性能要略勝一籌。
不過微軟的想法,是通過持續不斷的代碼庫更新來提升 ARM 性能,但又不至於在此過程中丟失任何功能特性。