Wydanie emulatora Box64 0.3.0, umożliwiającego uruchamianie gier x86 na systemach ARM64 i RISC-V

Opublikowano wydanie emulatora Box64 0.3.0, przeznaczonego do uruchamiania programów Linux skompilowanych dla architektury x86_64 na sprzęcie z procesorami ARM64, RISC-V i Loongarch64. Projekt kładzie duży nacisk na organizację uruchamiania aplikacji gier i zapewnia możliwość uruchamiania wersji Windows przez wine i Proton. Źródłowe kody projektu napisane są w języku C i są rozpowszechniane na licencji MIT.

Cechą projektu jest zastosowanie hybrydowego modelu wykonania, w którym emulacja stosowana jest tylko do kodu maszynowego samej aplikacji i specyficznych bibliotek. Typowe biblioteki systemowe, w tym libc, libm, GTK, SDL, Vulkan i OpenGL, są zastępowane wariantami dostosowanymi do docelowych platform. Dzięki temu wywołania bibliotek są wykonywane bez emulacji, co pozwala osiągnąć znaczny wzrost wydajności.

Emulacja kodu, dla którego brak native'owych zamienników na docelowej platformie, realizowana jest przy użyciu techniki dynamicznej rekompilacji (DynaRec) z jednego zestawu instrukcji maszynowych na inny. W porównaniu z interpretacją instrukcji maszynowych, dynamiczna rekompilacja wykazuje 5-10 razy wyższą wydajność.

W nowej wersji:

  • Zrealizowano wsparcie dla rozszerzeń procesorowych AVX, AVX2, BMI1, BMI2, ADX, FMA, F16C i RDRAND.
  • Dodano zmienną środowiskową BOX64_AVX, ustawienie 1 włącza obsługę AVX, BMI1, F16C i VAES, a ustawienie 2 — AVX2, BMI2, FMA, ADX, VPCLMULQDQ i RDRAND.
  • Dodano wsparcie dla dynamicznej rekompilacji (DynaRec) AVX, AVX2 i podobnych instrukcji na bazie instrukcji NEON, dostępnych w procesorach opartych na architekturze ARM64.
  • Dodano wstępną obsługę rekompilacji instrukcji SIMD na instrukcje RVV w systemach RISC-V.
  • Przeprowadzono optymalizację mechanizmu DynaRec, dodano wsparcie dla nowych kodów operacyjnych dla RISC-V i Loongarch64.
  • Zaktualizowano listę kodów operacyjnych CPUID, domyślnie zamiast Pentium IV przez CPUID teraz wydawany jest procesor serii Haswell.
  • Dodano wsparcie dla Wayland i zapewniono możliwość dynamicznej rekompilacji powiązanych z Wayland bibliotek, co umożliwiło uzyskanie zgodności z Wine-wayland.
  • Rozszerzono liczbę wspieranych gier, na przykład dodano zgodność z grą Death Stranding. Zapewniono identyfikację użycia biblioteki UnityPlayer.dll w uruchamianych w Wine programach oraz automatyczne ustawienie parametru BOX64_DYNAREC_STRONGMEM=1.

Ź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