Është prezantuar versioni i projektit FEX 2412, i cili zhvillon një emulator për ekzekutimin e lojërave dhe aplikacioneve të ndërtuara për arkitekturën x86 dhe x86-64, në një mjedis Linux në sisteme me procesorë ARM64 (AArch64). Ndër të tjera, emulatori FEX përdoret nga projekti Asahi për të mundësuar lançimin në mjedise Linux që punojnë në sisteme me çipa ARM të Apple Silicon, lojërave nga katalogu Steam, të ndërtuara për arkitekturën x86_64. Kodi i projektit është shkruar në gjuhën C++ me njësi assembleri dhe shpërndahet nën licencën MIT.
Bibliotekat e nevojshme për të ekzekutuar aplikacione x86 në një mjedis ARM64 lidhen në formën e një mbështjellësi overlay me imazhin e sistemit të rrënjës (rootfs), i cili ofrohet në formatin squashfs. Një mbështjellës i tillë lejon që të evitohen krijimi i një mjedisi të veçantë chroot. Ngarkimi i imazheve të formuara tashmë nga projekti bëhet me një utilitar të posaçëm të quajtur FEXRootFSFetcher.
Për të organizuar qasje në disa mundësi të mjedisit të host-imit, si mjetet për punë me zërin dhe grafikën 3D, në rootfs vendosen biblioteka të veçanta thunk, që përkthejnë thirrjet për bibliotekat dhe kodin në anën e sistemit host (për shembull, thirrjet për OpenGL dhe Vulkan mund të rrugëzohen). Biblioteka të tilla gjithashtu mund të përdoren në anën e host-it për thirrjet ndaj kodit në mjedisin mysafir. Ndër bibliotekat që mund të përcillet janë: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client dhe libxshmfence.
Ndër ndryshimet në versionin e ri, vërehet zgjidhja e problemeve me nisjen e klientit Steam, përkthimi i emulacionit të instruksioneve x86 PAUSE në përdorimin e instruksioneve ARM WFE në vend të YIELD, sigurimi i emulacionit të thirrjeve të sistemit të nevojshme për punën me gamepad, përmirësimi i emulacionit të CPUID dhe RDTSCP, restrukturimi i FEXCore (backend i emulacionit të CPU), dhe eliminimi i pasaktësive në emulacionin e zgjerimeve AVX.
Burimi: opennet.ru
