Windows on Arm can run native Arm and emulated x64 code in the same app, something Apple never let Macs do
It's a pretty neat trick and works surprisingly well.
Microsoft's Windows on Arm introduces a new application binary interface (ABI) called Arm64EC, which allows a single Windows process to run both native Arm code and emulated x64 code simultaneously. This is a significant improvement over Apple's approach during its transition to Apple Silicon, where apps could only run natively on Arm or emulated on x86_64.
Arm64EC offers compatibility with existing x64 plugins and add-ins, such as Office add-ins and audio plugins for digital audio workstations (DAWs), without requiring the original developers to port their code. This system enables developers to compile their applications as native Arm while still loading x64 plugins under Prism emulation within the same process.
The biggest advantage of Arm64EC lies in its ability to reduce the need for developers to port their code for Arm compatibility, as much of the Windows code an emulated app calls into runs natively. Arm64EC introduces a unique set of rules for x64-compatible software conventions within Arm64 instructions, which are executed natively on the CPU.
This allows Arm64EC code to identify itself as x64 to existing architecture checks while maintaining the x64 structure for CONTEXT, enabling exception handling, debuggers, and APIs to function correctly. The mapping of Arm registers to x64 CONTEXT structure is designed to keep all registers used by normal Arm64 calling conventions available, ensuring that Arm64EC functions can call each other as they do in native Arm64 code.
Written by urgent.news from XDA Developers's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.