Windows on ARM on RTX Spark#

Windows was traditionally run on x86/x86_64 chips. Windows on ARM is a version of the Windows operating system designed to run on devices with ARM-based processors instead. ARM processors use a different instruction set than x86 processors.

Windows on ARM supports three application models: native ARM64 applications, which are compiled specifically for ARM and run efficiently; x86_64 emulation, which lets 64-bit x86 applications run under emulation; and x86 emulation, which improves compatibility with more 32-bit software, although performance may vary. Emulation allows legacy applications to run, but native ARM applications offer better performance and battery life. For an overview, see Microsoft documentation.

Differences between WoA Emulation and Native Execution#

The instruction set extensions that an application sees under emulation depend on whether the application runs as 32-bit or 64-bit code.

Extension Support#

Applications that mix 32-bit and 64-bit components can observe different CPU capabilities depending on which component queries them. See Emulation Tips, Do’s and Don’ts for the feature bits that are unique to 64-bit mode and for mixed-binary checks.

Tip

CPUID features differ between 32-bit emulation and 64-bit emulation, with different vendor strings and feature bits exposed. IsProcessorFeaturePresent() feature bits also differ between 32-bit and 64-bit emulation.

Always run CPUID or IsProcessorFeaturePresent() from 64-bit mode for complete support. Before using a feature, check that the feature is supported.

Windows allows overriding the default behavior in the application properties.