Box86- ja Box64-emulaattorien uudet versiot, joiden avulla voit ajaa x86-pelejä ARM-järjestelmissä

Box86 0.2.6- ja Box64 0.1.8 -emulaattorien julkaisut on julkaistu, ja ne on suunniteltu suorittamaan x86- ja x86_64-arkkitehtuureille käännettyjä Linux-ohjelmia laitteissa, joissa on ARM-, ARM64-, PPC64LE- ja RISC-V-suorittimet. Projektit kehittää synkronisesti yksi kehittäjäryhmä - Box86 on rajoitettu kykyyn ajaa 32-bittisiä x86-sovelluksia, ja Box64 tarjoaa mahdollisuuden ajaa 64-bittisiä suoritettavia tiedostoja. Projektissa kiinnitetään suurta huomiota pelisovellusten käynnistämisen järjestämiseen, mukaan lukien mahdollisuus käynnistää Windows-koontiversioita viinin ja Protonin kautta. Projektin lähdekoodi on kirjoitettu C-kielellä ja jaettu (Box86, Box64) MIT-lisenssillä.

Projektin ominaisuus on hybridisuoritusmallin käyttö, jossa emulointia sovelletaan vain itse sovelluksen konekoodiin ja tiettyihin kirjastoihin. Tyypilliset järjestelmäkirjastot, mukaan lukien libc, libm, GTK, SDL, Vulkan ja OpenGL, korvataan kohdealustojen alkuperäisillä vaihtoehdoilla. Tällä tavalla kirjastokutsut suoritetaan ilman emulointia, mikä parantaa suorituskykyä merkittävästi.

Sellaisen koodin emulointi, jolle ei ole olemassa kohdealustalle syntyviä korvauksia, suoritetaan käyttämällä dynaamisen uudelleenkääntämisen tekniikkaa (DynaRec) konekäskyjoukosta toiseen. Verrattuna konekäskyjen tulkintaan, dynaaminen uudelleenkääntäminen osoittaa 5-10 kertaa paremman suorituskyvyn.

Suorituskykytesteissä Box86- ja Box64-emulaattorit, kun ne suoritettiin Armhf- ja Aarch64-alustoilla, suoriutuivat huomattavasti QEMU- ja FEX-emu-projekteista, ja yksittäisissä testeissä (glmark2, openarena) ne saavuttivat suorituskyvyn, joka oli identtinen kohteen kokoonpanon suorittamiseen. alusta. Laskentaintensiivisissä 7-zip- ja dav1d-testeissä Box64:n suorituskyky vaihteli välillä 27–53 % alkuperäisen sovelluksen suorituskyvystä (vertailun vuoksi, QEMU osoitti tuloksia 5-16 % ja FEX-emu - 13-26 % ). Lisäksi tehtiin vertailu Rosetta 2 -emulaattoriin, jota Apple käytti x86-koodin suorittamiseen järjestelmissä, joissa on M1 ARM -siru. Rosetta 2 tarjosi 7zip-pohjaisen testin suorituskyvyn 71 % alkuperäisestä koontiversiosta ja Box64 - 57 %.

Box86- ja Box64-emulaattorien uudet versiot, joiden avulla voit ajaa x86-pelejä ARM-järjestelmissä

Mitä tulee yhteensopivuuteen sovellusten kanssa, 165 testatusta pelistä noin 70 % toimi onnistuneesti. Noin 10 % toimii, mutta tietyin varauksin ja rajoituksin. Tuettuja pelejä ovat WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious ja useimmat GameMaker-pelit. Pelistä, joiden kanssa on havaittu ongelmia, mainitaan Mono-pakettiin sidottuun Unity3D-moottoriin perustuvat pelit, joiden emulointi ei aina toimi Monossa käytetyn JIT-käännöksen vuoksi ja on myös melko korkeat grafiikkavaatimukset, joita ei aina voida saavuttaa ARM-korteilla. GTK-sovelluskirjastojen korvaaminen on tällä hetkellä rajoitettu GTK2:een (GTK3/4:n korvaaminen ei ole täysin toteutettu).

Tärkeimmät muutokset uusissa julkaisuissa:

  • Lisätty sidonta Vulkan-kirjastoon. Lisätty tuki Vulkan- ja DXVK-grafiikkasovellusliittymälle (DXGI, Direct3D 9, 10 ja 11 toteutus Vulkanin päälle).
  • Parannetut sidokset GTK-kirjastoille. Lisätty sidokset gstreameriin ja GTK-sovelluksissa yleisesti käytettyihin kirjastoihin.
  • Lisätty alustava tuki (toistaiseksi vain tulkintatila) RISC-V- ja PPC64LE-arkkitehtuureille.
  • Korjauksia on tehty SteamPlayn ja Proton-kerroksen tuen parantamiseksi. Tarjoaa mahdollisuuden käyttää monia Steamin Linux- ja Windows-pelejä AArch64-levyillä, kuten Raspberry Pi 3 ja 4.
  • Parannettu muistinhallinta, mmap-suorituskyky ja muistisuojausrikkomusten seuranta.
  • Parannettu tuki kloonijärjestelmäkutsulle libc:ssä. Lisätty tuki uusille järjestelmäkutsuille.
  • Dynaaminen uudelleenkäännösmoottori on parantanut työtä SSE/x87-rekisterien kanssa, lisännyt tukea uusille konekoodeille, optimoinut kelluvien ja kaksoislukujen muunnoksia, parantanut sisäisten siirtymien käsittelyä ja yksinkertaistanut uusien arkkitehtuurien tuen lisäämistä.
  • Parannettu ELF-tiedostojen latausohjelma.

Lähde: opennet.ru

Lisää kommentti