Home Latest Feeds Technology News How does x86 translation work on Windows on Arm?

How does x86 translation work on Windows on Arm?

How does x86 translation work on Windows on Arm?


Key Takeaways

  • Windows on Arm CPUs lacks application support, but an emulator allows x86 apps to run with some performance drawbacks.
  • Emulating x86 code for Arm requires compiling in real-time and caching, resulting in potential performance loss compared to native software.
  • x86 software can’t run on Arm without emulation due to differences in instruction-set architecture, hindering native app development on Arm.

Windows has always been made for x86 CPUs from Intel and AMD, but ever since Windows RT came out a decade ago for smartphones, the operating system has slowly been becoming more friendly to Arm CPUs. Today, both Windows 10 and Windows 11 offer complete support for Arm CPUs, but there’s a catch. While the operating system itself runs just fine on these CPUs, most applications haven’t launched an Arm-compatible version. Although Windows can run on Arm chips, having few programs to actually use would be a problem.

However, Microsoft has a trick up its sleeve: an emulator to get x86 apps running on Arm-based machines. It’s the key thing that has given Windows on Arm its momentum since the translator came out in 2017. Here’s how the emulator works, and why Arm PCs need to use it if they want to run software made for x86 chips.


What is Arm: The history of the ISA and what’s to come

Companies like Apple and Samsung use Arm to make their processors, but what exactly is Arm? Here’s what you need to know.

Emulating x86 code for Arm CPUs in real time

Exactly what Apple does


The idea of emulating code made for one kind of processor so it can be run on another is nothing new. This is how game emulation works, which is popularly used for getting old video games to run on new devices with vastly different hardware. When you run an x86 app on an Arm PC, Windows takes blocks of the app’s code and compiles it into something that can run on an Arm chip. This is all done in real-time, and Windows has to cache all the code it’s translated, meaning that it doesn’t have to retranslate over and over again.

Unfortunately, performance is going to be worse on emulated apps compared to the code designed for the hardware. It’s hard to say how much performance you’re losing by running emulated code on Windows as the testing data is very sparse, but for comparison, Apple’s Rosetta 2 translator (which also translates x86 apps into Arm) loses about 20%. It’s possible to whittle that number down, but usually, emulation and translation result in a performance penalty no matter what.


Snapdragon X Elite vs Intel Core Ultra 7 155H: We ran the benchmarks

Intel stole the show at CES, but Qualcomm was there to say it’s still coming for them

Why x86 applications can’t run on Arm without emulation

It’s all down to the ISA

Intel Alder Lake H series processors

You might be wondering why software needs to be written specifically for x86, Arm, and other kinds of CPUs. It comes down to the difference in architecture, and in this case, we’re talking about the instruction-set architecture (ISA). They’re the most fundamental design of a processor and determine whether something simple like multiplication or something complex like AVX can be done natively. Changing the ISA affects the most fundamental way software interacts with hardware, down to the basic ones and zeroes that the CPU reads.

x86 is the ISA of Intel and AMD CPUs, which have historically been the only CPUs that Windows can even run on. Arm, meanwhile, has mostly been used for smartphones, and the overlap between PC software and phone software is very little. Naturally, most programs are either made for x86 or Arm, and for Windows on Arm, this was a massive problem because translation didn’t come out in 2020, while Windows RT (the first version of Windows to support Arm) came out in 2012.

It’s been about a decade since Windows started supporting Arm, so where are all the native apps? The primary issue is that it takes time and expertise to rewrite software for a different ISA, especially if developers want to do it well. Developers that don’t take the proper care to port an app from one ISA to another can result in glitches and bugs. A great example of this is Photoshop for Windows on Arm. It runs natively on Windows on Arm, yet in our review of the Lenovo Thinkpad X13s, we encountered several errors and lots of warnings that OpenCL and OpenGL weren’t supported. Coupled with a much smaller user base using Arm on Windows, there’s less of an incentive for developers to care.

So, when developers can’t or won’t devote the resources to creating native software, the alternative is emulation. Although translating x86 apps for Windows on Arm isn’t perfect, it’s impressive that it works at all, and sometimes losing performance is worth knowing the app will run as expected. At least until Windows on Arm hits the point where developers can no longer ignore it, translation and emulation give it a much-needed boost to its hardware-software ecosystem. Snapdragon X Elite may go a long way in this area, but until it launches to consumers fully, we’ll have to wait and see. Google Chrome is finally being built for Windows on Arm at least, so it seems that the Arm revolution may be sooner rather than later.


Windows on Arm will finally run Google Chrome natively

The world’s most popular browser is finally adding native support for Windows on Arm, paving the way for its success.



Please enter your comment!
Please enter your name here