Developers are working on an emulator that can run games and applications designed for X86 and X86-64 architectures on Linux systems with ARM64 processors (AARCH64). The FEX emulator is being utilized by the ASAHI project to enable the launching of games from the Steam catalog, built for the X86_64 architecture, on Linux systems with Apple Silicon ARM chips. The project is coded in C++ with assembler inserts and is available under the MIT license. More information about the project can be found here.
The necessary libraries required to run X86 applications on ARM64 systems are connected via Overlay layers to the root filesystem image, provided in Squashfs format. This method eliminates the need for creating a Chroot environment. The root filesystem image is loaded using the Fexrootfsfetcher tool prepared by the project. More details on setting up the root filesystem can be accessed here.
To access specific features of the host system, such as sound and 3D graphics capabilities, specialized Thunk Libraries are used. These libraries handle requests to libraries and system calls on the host system, redirecting them when necessary (e.g., redirecting requests to Opengl and Vulkan). These libraries can also be utilized on the host side to redirect requests to libraries in the guest environment.
The latest version of the emulator includes enhancements like support for launching the Steam client, translation of X86 PAUSE Instructions to ARM instructions like wfe instead of YIELD, improved emulation of CPU features like CPUID and RDTSCP, restructuring of fexcore for CPU emulations, and bug fixes related to AVX extensions. For more details on the latest changes, visit the release notes.