Die Veröffentlichung des Projekts FEX 2508, das einen Emulator für die Ausführung von Spielen und Anwendungen entwickelt, die für die Architekturen x86 und x86-64 in einer Linux-Umgebung auf Systemen mit ARM64-Prozessoren (AArch64) erstellt wurden. Der Emulator FEX wird vom Asahi-Projekt verwendet, um Spiele aus dem Steam-Katalog, die für die x86_64-Architektur compiliert wurden, auf Systemen mit Apple Silicon ARM-Chips auszuführen. Der Code des Projekts ist in C++ mit Assembler-Inserts geschrieben und wird unter der MIT-Lizenz vertrieben.
Die Bibliotheken, die für die Ausführung von x86-Anwendungen in einer ARM64-Umgebung erforderlich sind, werden in Form einer Overlay-Schicht mit einem Root-Dateisystem-Image (rootfs) bereitgestellt, das im SquashFS-Format geliefert wird. Eine solche Schicht ermöglicht es, ohne die Erstellung einer separaten chroot-Umgebung auszukommen. Das Laden der bereits vom Projekt erstellten rootfs-Images erfolgt durch das Tool FEXRootFSFetcher.
Um auf die Funktionen der Host-Umgebung, wie z.B. Sound- und 3D-Grafik-Tools, zugreifen zu können, werden in das rootfs Thunk-Bibliotheken eingefügt, die Aufrufe an die Bibliotheken und den Code auf der Host-Systemseite umsetzen (z.B. können Aufrufe an OpenGL und Vulkan umgeleitet werden). Solche Bibliotheken können auch auf der Host-Seite verwendet werden, um auf den Code in der Gastsystemumgebung zuzugreifen. Zu den verfügbaren Bibliotheken, die durchgereicht werden können, gehören: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client und libxshmfence.
In der neuen Version:
- Es wurde eine umfassende Optimierung des JIT-Compilers durchgeführt, die zu einer Verbesserung der FPS in dem Spiel Cyberpunk 2077 um 38,9 %, in Doom 2016 um 30,9 %, in Stray um 25,2 %, in Grim Fandango Remastered um 24,7 % und in Teardown um 12,6 % führte, während Gold of War 2018 um 4,6 % verbessert wurde. Die größten Auswirkungen hatten die Optimierungen des Call-Return-Stacks sowie die Nutzung der TSO (Total Store Ordering)-Speichermodelle in wow64/arm64ec-Bibliotheken, die von den Apple Silicon-CPUs unterstützt werden.

- Die Unterstützung des NX-Bits (No Execute) wurde implementiert, um die Ausführung von Anweisungen in Bereichen des Speichers zu untersagen, die speziell nicht als ausführbar markiert sind.
- Die Unterstützung des Codes, der zur Verhinderung von Debugging und zur Beeinflussung des Ablaufs in Spielen wie Peggle Deluxe und Crysis 2: Maximum Edition verwendet wird, wurde verbessert.
Quelle: opennet.ru

