Support for ARM 64-bit Windows

Support for ARM 64-bit Windows

Microsoft has been trying for several years to offer Windows computers with ARM processors, without much commercial success, as very few applications are compatible with this architecture. To solve this problem, Microsoft has added an emulator to Windows 11 that lets you run applications designed to run on Intel processors. We wanted to check that our applications and libraries work correctly with this emulator. They do, but we took the opportunity to add native support for ARM processors.




As we said, Windows 11 ARM includes an emulator that lets you run any application that's designed to run on an Intel (32- or 64-bit) processor. As a first step, we checked that our applications and libraries worked correctly with this emulator.

The good news is that everything works without a hitch. Both the 32-bit and 64-bit versions of VirtualHub work perfectly on our Surface Laptop equipped with an ARM processor (Snapdragon® X Plus). The emulator handles USB ports correctly, with no visible latency. Unless you look in the Task Manager, it's impossible to guess that this is not a native application.

The Intel 64-bit version of VirtualHub runs on ARM thanks to the emulator
The Intel 64-bit version of VirtualHub runs on ARM thanks to the emulator



The same applies to our programming library examples. Everything works as expected. If you have applications that use Yoctopuce modules, there's a 99.9% chance that everything will work without requiring any changes.

We could have stopped our tests there, but since we're a bit fussy, we decided to take the opportunity to add native support for ARM Windows 11.

Native support

Providing a dedicated ARM binary is more efficient, as the processor can execute the application's instructions directly without having to use the emulator to "translate" Intel instructions into ARM instructions. Generally, this results in faster execution and lower power consumption.

We have therefore decided to offer ARM binaries for VirtualHub v2 as well as for the C++, C#, Python, and Java programming libraries.

For VirtualHub v2, the ARM binary can be found in the arm64 subdirectory. Be careful not to confuse it with the Intel 64-bit binary in the amd64 subdirectory. If in doubt, consult the executable properties.


 
Right-click on VirtualHub.exe to find out which processor the executable is designed for.



For the C++, C#, Python, and Java programming libraries, we have included the ARM binaries in the archive and adapted the makefiles and projects so that they can generate an ARM binary.

Visual Studio projects for C++ examples can compile an ARM version
Visual Studio projects for C++ examples can compile an ARM version



Note that the TypeScript, Ecmascript, and PHP libraries automatically support the ARM platform, as it is the virtual machine running the application that compiles the source code. For TypeScript and Ecmascript, this depends on the browser used. If the browser is a version compiled for the Intel processor, the emulator is used. On the other hand, if the browser is compiled for ARM, the code is executed directly.

Finally, we have not made the effort to offer native versions of our Delphi and Visual Basic programming libraries, as these languages are losing ground. But it is still possible to use Intel versions of these libraries on ARM Windows 11, thanks to the emulator.

Conclusion

Microsoft finally seems to have found a viable solution for running Windows on ARM processors. For the first time, porting applications to this new platform is not a headache. The integrated emulator works very well and doesn't seem to be too penalizing from a performance point of view. And if the developer decides to offer an ARM-optimized version, the work involved in porting an application to this platform is very straightforward.

We're curious to see whether consumers will follow suit and whether this architecture will become the norm. In any case, we're ready.

Add a comment No comment yet Back to blog












Yoctopuce, get your stuff connected.