FEX-EMU has officially released the project fex 2508, an emulator developed for running x86 architectures and x86-64 applications on Linux-based systems with ARM64 processors (AARCH64). The FEX emulator is utilized by the ASAHI project to enable the launch of games from the Steam catalog, specifically designed for the X86_64 architecture, on systems with ARM-based Apple Silicon chips. The project is primarily written in C++ with assembler inserts and is distributed under the MIT license.
The necessary libraries for running x86 applications on ARM64 systems are incorporated as Overlay layers with a root FS image, provided in squashfs format. This setup eliminates the need for creating a separate Chroot environment, with RootFS images loaded beforehand using Fexrootfsfetcher.
To access host-control capabilities like sound and 3D graphics, Thunk libraries are integrated into the RootFS, redirecting libraries and code to the host system. These libraries, such as LibeGL, Libgl, Libsdl2, Libx11, and others, can be utilised for interacting with the guest environment. Additionally, they can be employed on the host side for executing code in the guest environment.
In the latest version of the emulator, significant improvements have been made:
- A substantial optimization of the JIT compiler has resulted in a 38.9% increase in FPS in games like Cyberpunk 2077, 30.9% in Doom 2016, 25.2% in Stray, and other notable improvements in various games. The optimization of Call-Return stacks and the utilization of Wow64/ARM64EC libraries have contributed significantly to the enhanced performance.
- NOX-bit support has been implemented to restrict the execution of instructions in specific memory areas.
- Enhanced support for code execution prevention mechanisms in games like Peggle Deluxe and Crysis 2: Maximum Edition has been integrated.