Nuwe weergawes van Box86- en Box64-emulators wat jou toelaat om x86-speletjies op ARM-stelsels te laat loop

Vrystellings van Box86 0.2.6 en Box64 0.1.8-emulators is gepubliseer om Linux-programme te laat loop wat gebou is vir x86- en x86_64-argitekture op ARM-, ARM64-, PPC64LE- en RISC-V-verwerkers. Projekte ontwikkel in sinchronisasie met een ontwikkelingspan - Box86 is beperk tot die vermoë om 32-bis x86-toepassings te laat loop, terwyl Box64 die vermoë bied om 64-bis-uitvoerbare programme te laat loop. Die projek gee groot aandag aan die organisering van die bekendstelling van dobbeltoepassings, insluitend die vermoë om Windows-geboue deur wyn en Proton te begin. Die brontekste van die projek is in die C-taal geskryf en versprei (Box86, Box64) onder die MIT-lisensie.

'n Kenmerk van die projek is die gebruik van 'n hibriede uitvoeringsmodel, waarin emulasie slegs op die masjienkode van die toepassing self en spesifieke biblioteke toegepas word. Generiese stelselbiblioteke, insluitend libc, libm, GTK, SDL, Vulkan en OpenGL, word vervang met variante wat inheems is aan die teikenplatforms. Biblioteekoproepe word dus sonder emulasie uitgevoer, wat 'n aansienlike prestasieverhoging moontlik maak.

Emulasie van kode wat nie inheemse vervangings vir die teikenplatform het nie, word uitgevoer met behulp van die dinamiese hersamestelling (DynaRec) tegniek van een stel masjieninstruksies na 'n ander. In vergelyking met die interpretasie van masjieninstruksies, toon dinamiese hersamestelling 5-10 keer hoër werkverrigting.

In prestasietoetse, wanneer hulle op die Armhf- en Aarch86-platforms gebruik word, het die Box64- en Box64-emulators aansienlik beter gevaar as die QEMU- en FEX-emu-projekte, en in sommige toetse (glmark2, openarena) het hulle prestasie behaal wat identies is aan die bestuur van 'n samestelling wat inheems aan die teikenplatform is. . In die rekenaar-intensiewe 7-zip- en dav1d-maatstawwe was Box64 se prestasie tussen 27% en 53% van dié van die inheemse toepassing (vergeleke met QEMU op 5-16% en FEX-emu op 13-26%). Daarbenewens is 'n vergelyking gemaak met die Rosetta 2-emulator wat deur Apple gebruik word om x86-kode op stelsels met 'n ARM M1-skyfie uit te voer. Rosetta 2 het die 7zip-gebaseerde toets uitgevoer teen 71% van die oorspronklike bou, en Box64 op 57%.

Nuwe weergawes van Box86- en Box64-emulators wat jou toelaat om x86-speletjies op ARM-stelsels te laat loop

Wat toepassingsversoenbaarheid betref, uit 165 speletjies wat getoets is, is ongeveer 70% suksesvol verdien. Sowat 10% meer werk, maar met sekere voorbehoude en beperkings. Ondersteunde speletjies sluit in WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious en die meeste GameMaker-speletjies. Van die speletjies waarmee probleme opgemerk word, word speletjies genoem wat op die Unity3D-enjin gebaseer is, wat gekoppel is aan die Mono-pakket, waarvan die emulasie nog nie altyd werk nie as gevolg van die JIT-samestelling wat in Mono gebruik word, en ook redelik hoë grafika het. vereistes wat nie altyd op ARM-borde haalbaar is nie. Die vervanging van GTK-toepassingsbiblioteke is tans beperk tot GTK2 (vervanging van GTK3/4 is nie ten volle geïmplementeer nie).

Belangrikste veranderinge in nuwe vrystellings:

  • Bygevoeg binding vir die Vulkan-biblioteek. Bygevoeg ondersteuning vir Vulkan en DXVK grafiese API (implementering van DXGI, Direct3D 9, 10 en 11 bo-op Vulkan).
  • Verbeterde bindings vir GTK-biblioteke. Bygevoegde bindings vir gstreamer en biblioteke wat algemeen in GTK-toepassings gebruik word.
  • Bygevoeg aanvanklike ondersteuning (tot dusver slegs interpretasiemodus) vir RISC-V en PPC64LE argitekture.
  • Foutoplossings is gemaak om SteamPlay-ondersteuning en die Proton-laag te verbeter. Dit is moontlik om baie Linux- en Windows-speletjies vanaf Steam op AArch64-borde soos Raspberry Pi 3 en 4 te laat loop.
  • Verbeterde geheuebestuur, mmap-gedrag en monitering van geheuebeskermingskendings.
  • Verbeterde ondersteuning vir kloonstelseloproep in libc. Bygevoeg ondersteuning vir nuwe stelsel oproepe.
  • In die dinamiese hersamestelling-enjin is werk met SSE/x87-registers verbeter, ondersteuning vir nuwe masjienkodes is bygevoeg, omskakelings van dryf- en dubbelgetalle is geoptimaliseer, verwerking van interne spronge is verbeter, en ondersteuning vir nuwe argitekture is vereenvoudig.
  • Verbeterde ELF-lêeroplaaier.

Bron: opennet.ru

Voeg 'n opmerking