Fex 2503 Emulator Launches for X86 on ARM64 Systems

Published the release of the project FEX 2503

The FEX emulator, developed for running X86 architectures and X86-64 applications on systems with ARM64 processors (AARCH64), has been released by FEX. This emulator is utilized by the ASAHI project to launch Steam games cataloged for the X86_64 architecture on systems with ARM-chips of Apple Silicon. The project’s code, written in C++ with assembler inserts, is distributed under the MIT license.

To facilitate the launch of X86 applications on ARM64 systems, necessary libraries are linked as Overlay-layers with the root fs image (rootfs) in Squashfs format. These layers eliminate the need for creating a separate Chroot environment, with rootfs images fetched by Fexrootfsfetcher.

Including thunk libraries in Rootfs enables access to host system capabilities such as sound and 3D graphics tools. These libraries translate calls to libraries and code on the host system, allowing redirection of OpenGL and Vulkan calls. Some accessible libraries include Libegl, Libgl, Libsdl2, Libx11, Libvdso, Libasound, Libdrm, Libfex_malloc, Libvulkan, Libwayland-Client, and Libxshmfence.

In the latest version of FEX 2503:

  • Improved computing accuracy for reverse meanings and reverse square roots, addressing the challenge of emulation on ARM systems due to varying instruction accuracy in ARM64, X86, and 3DNOW. Arm extensions like Feat_rpres ARM and the Newton method are used for X86 and 3DNOW accuracy.
  • The “Multiblock” mode is now default, enhancing performance by allowing JIT to compile more code at once.
  • For faster emulation of X86 instructions like SHA1RNDS4, Sha1MSG2, and Sha256MSG2, corresponding ARM processors are employed.
  • Added statistics through the interface <
/Reports, release notes, official announcements.