È stato rilasciato il progetto FEX 2412, che sviluppa un emulatore per eseguire giochi e applicazioni compilati per architetture x86 e x86-64 in ambienti Linux su sistemi con processori ARM64 (AArch64). Tra l'altro, l'emulatore FEX è utilizzato dal progetto Asahi per facilitare l'avvio in ambienti Linux su sistemi con chip ARM Apple Silicon, di giochi dal catalogo Steam compilati per architettura x86_64. Il codice del progetto è scritto in C++ con inserimenti in assembly e distribuito con licenza MIT.
Le librerie necessarie per eseguire applicazioni x86 in un ambiente ARM64 vengono collegate sotto forma di uno strato overlay con un'immagine del filesystem root (rootfs), fornita in formato squashfs. Questo strato consente di evitare la creazione di un ambiente chroot separato. Il caricamento delle immagini rootfs già formate dal progetto avviene tramite un'apposita utility chiamata FEXRootFSFetcher.
Per abilitare l'accesso a determinate funzionalità dell'ambiente di hosting, come gli strumenti per la gestione dell'audio e della grafica 3D, vengono collocate nel rootfs librerie thunk speciali, che traducono le chiamate a librerie e codice sul lato del sistema host (ad esempio, possono reindirizzare le chiamate a OpenGL e Vulkan). Queste librerie possono essere utilizzate anche sul lato host per accedere al codice nell'ambiente guest. Tra le librerie disponibili per il passthrough ci sono: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client e libxshmfence.
Tra le novità della nuova versione si segnalano la risoluzione di problemi con l'avvio del client Steam, la traduzione dell'emulazione delle istruzioni x86 PAUSE all'uso dell'istruzione ARM WFE invece di YIELD, il supporto per l'emulazione delle chiamate di sistema necessarie per il funzionamento dei joystick, il miglioramento dell'emulazione di CPUID e RDTSCP, la ristrutturazione di FEXCore (il backend per l'emulazione CPU), e la correzione di difetti nell'emulazione delle estensioni AVX.
Fonte: opennet.ru
