Veröffentlichung des Emulators FEX 2412, der die Ausführung von x86-Programmen auf ARM64-Systemen ermöglicht

Die Ausgabe des Projekts FEX 2412 wurde präsentiert, das einen Emulator zur 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) zusammengestellt wurden. Unter anderem wird der Emulator FEX vom Asahi-Projekt verwendet, um den Start von Spielen aus dem Steam-Katalog, die für die Architektur x86_64 kompiliert wurden, in Linux-Umgebungen auf Systemen mit Apple Silicon ARM-Chips zu ermöglichen. Der Code des Projekts ist in C++ mit Assembler-Einfügungen geschrieben und wird unter der MIT-Lizenz veröffentlicht.

Die Bibliotheken, die für den Start von x86-Anwendungen in einer ARM64-Umgebung erforderlich sind, werden in Form einer Overlay-Schicht mit dem im squashfs-Format gelieferten Root-Dateisystem (rootfs) eingebunden. Eine solche Schicht ermöglicht es, ohne die Erstellung einer separaten chroot-Umgebung auszukommen. Die Bereitstellung der bereits durch das Projekt erstellten rootfs-Images erfolgt durch das speziell entwickelte Dienstprogramm FEXRootFSFetcher.

Um den Zugriff auf bestimmte Funktionen der Host-Umgebung zu ermöglichen, wie etwa Audiowerkzeuge und 3D-Grafik, werden spezielle Thunk-Bibliotheken in das rootfs eingefügt, die Aufrufe an Bibliotheken und Code auf der Seite der Host-Systeme übersetzen (zum Beispiel können Aufrufe an OpenGL und Vulkan umgeleitet werden). Solche Bibliotheken können auch auf der Host-Seite verwendet werden, um auf Code in der Gastumgebung zuzugreifen. Zu den verfügbaren weiterleitbaren Bibliotheken gehören: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client und libxshmfence.

Zu den Änderungen in der neuen Version gehört die Behebung von Problemen mit dem Start des Steam-Clients, die Umstellung der Emulation des x86-Befehls PAUSE auf die Verwendung des ARM-Befehls WFE anstelle von YIELD, die Bereitstellung der Emulation von Systemaufrufen, die für die Verwendung mit Gamepads erforderlich sind, die Verbesserung der Emulation von CPUID und RDTSCP, die Umstrukturierung von FEXCore (Backend der CPU-Emulation) und die Behebung von Mängeln in der Emulation von AVX-Erweiterungen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4