Ă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
