早在 2021 年 6 月,微软就宣布了适用于 Windows 11 的 ARM64EC 。官方称之为一种使现有 x64 应用程序在 ARM 平台上获得近乎原生性能的新方法 —— 即便你调用了尚不支持该脚骨的插件和依赖项。转眼一年过去,ARM64EC 终于迎来了面向 Windows 11 的更完整支持。
据悉,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 性能,但又不至于在此过程中丢失任何功能特性。