Wydanie emulatora FEX 2508, który umożliwia uruchamianie programów x86 na systemach ARM64

Opublikowano wydanie projektu FEX 2508, który rozwija emulator do uruchamiania gier i aplikacji skompilowanych dla architektur x86 i x86-64 w środowisku Linux na systemach z procesorami ARM64 (AArch64). Emulator FEX jest wykorzystywany przez projekt Asahi do uruchamiania gier ze Steama, skompilowanych dla architektury x86_64, na systemach z chipami ARM Apple Silicon. Kod projektu jest napisany w języku C++ z wstawkami asemblerowymi i jest rozpowszechniany na licencji MIT.

Biblioteki niezbędne do uruchamiania aplikacji x86 w środowisku ARM64 są ładowane w formie warstwy overlay z obrazem systemu plików (rootfs) dostarczanym w formacie SquashFS. Taka warstwa umożliwia ominięcie konieczności tworzenia oddzielnego środowiska chroot. Wczytywanie już przygotowanych przez projekt obrazów rootfs odbywa się za pomocą narzędzia FEXRootFSFetcher.

Aby uzyskać dostęp do funkcji środowiska gospodarza, takich jak narzędzia do obsługi dźwięku i grafiki 3D, do rootfs wprowadza się biblioteki thunk, które tłumaczą wywołania do bibliotek i kodu na stronie systemu gospodarza (na przykład, mogą być przekierowywane wywołania do OpenGL i Vulkan). Takie biblioteki mogą być również używane na stronie gospodarza do wywoływania kodu w środowisku gościa. Wśród bibliotek dostępnych do przekazywania znajdują się: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client i libxshmfence.

W nowej wersji:

  • Przeprowadzono znaczną optymalizację kompilatora JIT, co pozwoliło na zwiększenie FPS w grze Cyberpunk 2077 o 38,9%, Doom 2016 o 30,9%, Stray o 25,2%, Grim Fandango Remastered o 24,7%, Teardown o 12,6%, a na Gold of War 2018 o 4,6%. Największy wpływ miały optymalizacje stosu wywołań i zwrotów (call-return), a także wykorzystanie w bibliotekach modelu pamięci wow64/arm64ec TSO (Total Store Ordering), wspieranego przez procesory Apple Silicon.
    Wydanie emulatora FEX 2508, który umożliwia uruchamianie programów x86 na systemach ARM64
  • Wprowadzono wsparcie dla bitu NX (No Execute), aby zabronić wykonywania instrukcji w obszarach pamięci, które nie są specjalnie oznaczone jako dozwolone do wykonania.
  • Udoskonalono wsparcie dla kodu używanego do zapobiegania debugowaniu i modyfikowaniu przebiegu wykonania w grach takich jak Peggle Deluxe i Crysis 2: Maximum Edition.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster