Претставено е изданието на проектот FEX 2412, кој развива емулатор за извршување игри и апликации компајлирани за x86 и x86-64 архитектури. Linux-околина на системи со ARM64 (AArch64) процесори. Меѓу другото, FEX емулаторот се користи од проектот Asahi за организирање на лансирање во Linux-средини што работат на системи со Apple Silicon ARM чипови, игри од каталогот Steam, компајлирани за архитектурата x86_64. Кодот на проектот е напишан во C++ со асемблерски вметнувања и се дистрибуира под лиценцата MIT.
Библиотеките потребни за извршување на x86 апликации во средина ARM64 се поврзани во форма на слој за преклопување со сликата на root датотечен систем (rootfs), обезбедени во формат squashfs. Таквиот слој овозможува да се направи без создавање посебна средина за chroot. Вчитувањето на сликите на rootfs веќе генерирани од проектот се врши од специјално подготвена алатка FEXRootFSFetcher.
За да се организира пристап до одредени можности на околината на домаќинот, како што се алатки за работа со звук и 3D графика, во rootf-овите се поставуваат специјални thunk библиотеки кои ги преведуваат повиците до библиотеките и кодот на страната на системот домаќин (на пример, повици до OpenGL и Vulkan). Слични библиотеки може да се користат и од страната на домаќинот за пристап до кодот во гостинската околина. Библиотеките достапни за проследување вклучуваат: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client и libxshmfence.
Промените во новата верзија вклучуваат решавање проблеми со стартување на клиентот Steam, пренесување на емулација на инструкцијата x86 PAUSE за користење на инструкцијата ARM WFE наместо YIELD, обезбедување емулација на системски повици неопходни за работа со гејмпади, подобрување на CPUID и RDTSCP емулација, реструктуирање на FEXCore (процесор за емулација), елиминирање на грешки во емулацијата на AVX екстензии.
Извор: opennet.ru
