Bolo prezentované vydanie projektu FEX 2412, ktorý vyvíja emulátor na spúšťanie hier a aplikácií kompilovaných pre architektúry x86 a x86-64. Linux-prostredie na systémoch s procesormi ARM64 (AArch64). Emulátor FEX sa okrem iného používa v projekte Asahi na organizáciu spustenia v Linux-prostredia bežiace na systémoch s čipmi Apple Silicon ARM, hry z katalógu Steam, kompilované pre architektúru x86_64. Kód projektu je napísaný v jazyku C++ s vloženými assemblermi a je distribuovaný pod licenciou MIT.
Knižnice potrebné na spustenie x86 aplikácií v prostredí ARM64 sú prepojené formou prekryvnej vrstvy s obrazom koreňového súborového systému (rootfs), dodávaným vo formáte squashfs. Takáto vrstva umožňuje zaobísť sa bez vytvárania samostatného prostredia chroot. Načítanie obrázkov rootfs už vygenerovaných projektom vykonáva špeciálne pripravená utilita FEXRootFSFetcher.
Na organizáciu prístupu k určitým schopnostiam hostiteľského prostredia, ako sú nástroje na prácu so zvukom a 3D grafikou, sú do rootfs umiestnené špeciálne thunk knižnice, ktoré prekladajú volania do knižníc a kód na strane hostiteľského systému (napríklad volania na OpenGL a Vulkan). Podobné knižnice možno použiť aj na strane hostiteľa na prístup ku kódu v prostredí hosťa. Knižnice dostupné na preposielanie zahŕňajú: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client a libxshmfence.
Zmeny v novej verzii zahŕňajú riešenie problémov so spúšťaním klienta Steam, konverziu emulácie x86 inštrukcie PAUSE na použitie inštrukcie ARM WFE namiesto YIELD, poskytovanie emulácie systémových volaní potrebných pre prácu s gamepadmi, zlepšenie emulácie CPUID a RDTSCP, reštrukturalizáciu FEXCore (emulačný backend CPU), ktorý odstraňuje chyby v emulácii rozšírení AVX.
Zdroj: opennet.ru
