Nye versjoner av Box86 og Box64 emulatorer, som lar deg kjøre x86-spill på ARM-systemer

Utgivelser av Box86 0.2.6 og Box64 0.1.8 emulatorer har blitt publisert, designet for å kjøre Linux-programmer kompilert for x86 og x86_64 arkitekturer på utstyr med ARM, ARM64, PPC64LE og RISC-V prosessorer. Prosjekter utvikles synkront av ett team av utviklere - Box86 er begrenset til muligheten til å kjøre 32-bits x86-applikasjoner, og Box64 gir muligheten til å kjøre 64-biters kjørbare filer. Prosjektet legger stor vekt på å organisere lanseringen av spillapplikasjoner, inkludert å gi muligheten til å lansere Windows-bygg gjennom vin og Proton. Kildekoden for prosjektet er skrevet i C og distribuert (Box86, Box64) under MIT-lisensen.

En funksjon i prosjektet er bruken av en hybrid utførelsesmodell, der emulering bare brukes på maskinkoden til selve applikasjonen og spesifikke biblioteker. Typiske systembiblioteker, inkludert libc, libm, GTK, SDL, Vulkan og OpenGL, erstattes med alternativer som er hjemmehørende i målplattformene. På denne måten utføres bibliotekanrop uten emulering, noe som resulterer i betydelige ytelsesgevinster.

Emulering av kode som det ikke er noen erstatninger for målplattformen utføres ved å bruke en teknikk for dynamisk rekompilering (DynaRec) fra ett sett med maskininstruksjoner til et annet. Sammenlignet med å tolke maskininstruksjoner, viser dynamisk rekompilering 5-10 ganger høyere ytelse.

I ytelsestester overgikk Box86- og Box64-emulatorene, når de ble utført på Armhf- og Aarch64-plattformene, betydelig bedre enn QEMU- og FEX-emu-prosjektene, og i individuelle tester (glmark2, openarena) oppnådde de ytelse identisk med å kjøre en sammenstilling som er hjemmehørende i målet plattform. I de beregningsintensive 7-zip- og dav1d-testene varierte Box64s ytelse fra 27 % til 53 % av ytelsen til den opprinnelige applikasjonen (til sammenligning viste QEMU resultater på 5-16 %, og FEX-emu - 13-26 % ). I tillegg ble det gjort en sammenligning med Rosetta 2-emulatoren, brukt av Apple til å kjøre x86-kode på systemer med M1 ARM-brikken. Rosetta 2 ga den 7zip-baserte testen med ytelse på 71 % av den opprinnelige konstruksjonen, og Box64 – 57 %.

Nye versjoner av Box86 og Box64 emulatorer, som lar deg kjøre x86-spill på ARM-systemer

Når det gjelder kompatibilitet med applikasjoner, fungerte omtrent 165 % av 70 testede spill. Omtrent ytterligere 10 % jobber, men med visse forbehold og begrensninger. Støttede spill inkluderer WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious og de fleste GameMaker-spill. Blant spillene det har blitt registrert problemer med, nevnes spill basert på Unity3D-motoren, som er knyttet til Mono-pakken, hvis emulering ikke alltid fungerer på grunn av JIT-kompileringen brukt i Mono, og har også ganske høye grafikkkrav som ikke alltid er oppnåelige på ARM-kort. Substitusjon av GTK-applikasjonsbiblioteker er foreløpig begrenset til GTK2 (erstatning av GTK3/4 er ikke fullt implementert).

Hovedendringer i nye utgivelser:

  • Lagt til binding for Vulkan-biblioteket. Lagt til støtte for Vulkan og DXVK grafikk API (implementering av DXGI, Direct3D 9, 10 og 11 på toppen av Vulkan).
  • Forbedrede bindinger for GTK-biblioteker. Lagt til bindinger for gstreamer og biblioteker som vanligvis brukes i GTK-applikasjoner.
  • Lagt til innledende støtte (bare tolkningsmodus foreløpig) for RISC-V- og PPC64LE-arkitekturer.
  • Rettelser er gjort for å forbedre støtten for SteamPlay og Proton-laget. Gir muligheten til å kjøre mange Linux- og Windows-spill fra Steam på AArch64-kort som Raspberry Pi 3 og 4.
  • Forbedret minneadministrasjon, mmap-ytelse og sporing av brudd på minnebeskyttelse.
  • Forbedret støtte for klonesystemkallet i libc. Lagt til støtte for nye systemanrop.
  • Den dynamiske rekompileringsmotoren har forbedret arbeidet med SSE/x87-registre, lagt til støtte for nye maskinkoder, optimaliserte konverteringer av flyt- og doble tall, forbedret behandling av interne overganger og forenklet tillegg av støtte for nye arkitekturer.
  • Forbedret ELF-fillaster.

Kilde: opennet.ru

Legg til en kommentar