Publication de l'émulateur FEX 2412, permettant d'exécuter des programmes x86 sur des systèmes ARM64.

La version du projet FEX 2412 a été présentée, développant un émulateur pour exécuter des jeux et des applications compilés pour les architectures x86 et x86-64, dans un environnement Linux sur des systèmes avec des processeurs ARM64 (AArch64). Entre autres, l'émulateur FEX est utilisé par le projet Asahi pour organiser le lancement de jeux du catalogue Steam, compilés pour l'architecture x86_64, dans des environnements Linux tournant sur des systèmes avec des puces ARM d'Apple Silicon. Le code du projet est écrit en C++ avec des inserts d'assembleur et est distribué sous la licence MIT.

Les bibliothèques nécessaires pour exécuter des applications x86 dans un environnement ARM64 sont intégrées sous la forme d'une couche overlay avec une image de système de fichiers racine (rootfs), fournie au format squashfs. Une telle couche permet de contourner la création d'un environnement chroot distinct. Le chargement d'images rootfs déjà formées par le projet est effectué par l'utilitaire spécialement préparé FEXRootFSFetcher.

Pour organiser l'accès à certaines fonctionnalités de l'environnement hôte, telles que les outils pour travailler avec le son et la 3D, des bibliothèques thunk spéciales sont placées dans le rootfs, traduisant les appels aux bibliothèques et au code du système hôte (par exemple, les appels à OpenGL et Vulkan peuvent être redirigés). De telles bibliothèques peuvent également être utilisées du côté hôte pour accéder au code dans l'environnement invité. Parmi les bibliothèques disponibles pour le passage : libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client et libxshmfence.

Les changements dans la nouvelle version incluent la résolution des problèmes de lancement du client Steam, la conversion de l'émulation de l'instruction x86 PAUSE pour utiliser l'instruction ARM WFE au lieu de YIELD, l'implémentation de l'émulation des appels système nécessaires pour le fonctionnement des manettes, l'amélioration de l'émulation de CPUID et RDTSCP, la restructuration de FEXCore (backend d'émulation CPU), et la correction de bugs dans l'émulation des extensions AVX.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster