A Box86 és Box64 emulátorok új verziói, amelyek lehetővé teszik az x86-os játékok futtatását ARM rendszereken

Megjelent a Box86 0.2.6 és Box64 0.1.8 emulátorok kiadása, amelyek az x86 és x86_64 architektúrára fordított Linux programok futtatására szolgálnak ARM, ARM64, PPC64LE és RISC-V processzorokkal rendelkező berendezéseken. A projekteket egy fejlesztői csapat szinkronban fejleszti – a Box86 32 bites x86 alkalmazások futtatására korlátozódik, a Box64 pedig 64 bites futtatható fájlok futtatására ad lehetőséget. A projekt nagy figyelmet fordít a játékalkalmazások indításának megszervezésére, beleértve a Windows buildek elindításának lehetőségét a winen és a Protonon keresztül. A projekt forráskódja C nyelven íródott, és az MIT licenc alatt kerül terjesztésre (Box86, Box64).

A projekt egyik jellemzője egy hibrid végrehajtási modell használata, amelyben az emulációt csak magának az alkalmazásnak a gépi kódjára és bizonyos könyvtárakra alkalmazzák. A tipikus rendszerkönyvtárakat, beleértve a libc-t, libm-et, GTK-t, SDL-t, Vulkan-t és OpenGL-t, a célplatformokon natív opciók váltják fel. Ily módon a könyvtárhívások emuláció nélkül hajtódnak végre, ami jelentős teljesítménynövekedést eredményez.

A célplatformon natív módon nem helyettesített kódok emulációja dinamikus újrafordítási technikával (DynaRec) történik az egyik gépi utasításkészletről a másikra. A gépi utasítások értelmezéséhez képest a dinamikus újrafordítás 5-10-szer nagyobb teljesítményt mutat.

A teljesítménytesztekben a Box86 és Box64 emulátorok Armhf és Aarch64 platformon végrehajtva jelentősen felülmúlták a QEMU és FEX-emu projekteket, az egyes tesztekben (glmark2, openarena) pedig a célon natív összeállítás futtatásával megegyező teljesítményt értek el. felület. A számításigényes 7-zip és dav1d tesztekben a Box64 teljesítménye a natív alkalmazás teljesítményének 27%-a és 53%-a között mozgott (összehasonlításképpen a QEMU 5-16%-os, a FEX-emu pedig 13-26%-os eredményt mutatott). ). Ezenkívül összehasonlítást végeztek a Rosetta 2 emulátorral, amelyet az Apple x86-os kód futtatására használt M1 ARM chippel rendelkező rendszereken. A Rosetta 2 a 7zip alapú tesztet a natív build 71%-ával, a Box64 pedig 57%-kal biztosította.

A Box86 és Box64 emulátorok új verziói, amelyek lehetővé teszik az x86-os játékok futtatását ARM rendszereken

Ami az alkalmazásokkal való kompatibilitást illeti, a 165 tesztelt játék körülbelül 70%-a sikeresen működött. Körülbelül további 10% működik, de bizonyos fenntartásokkal és korlátozásokkal. A támogatott játékok közé tartozik a WorldOfGoo, az Airline Tycoon Deluxe, az FTL, az Undertale, az A Risk of Rain, a Cook Serve Delicious és a legtöbb GameMaker játék. A problémákat feltáró játékok között említik a Mono csomaghoz kötődő Unity3D motorra épülő játékokat, amelyek emulációja a Mono-ban használt JIT-összeállítás miatt nem mindig működik, és meglehetősen magas grafikai követelmények, amelyek nem mindig teljesíthetők az ARM kártyákon. A GTK alkalmazáskönyvtárak helyettesítése jelenleg a GTK2-re korlátozódik (a GTK3/4 helyettesítése nincs teljesen megvalósítva).

Főbb változások az új kiadásokban:

  • Kötés hozzáadva a Vulkan könyvtárhoz. Hozzáadott támogatás a Vulkan és DXVK grafikus API-hoz (DXGI, Direct3D 9, 10 és 11 megvalósítása a Vulkan tetején).
  • Továbbfejlesztett kötések a GTK-könyvtárak számára. Hozzáadott kötések a gstreamerhez és a GTK-alkalmazásokban általánosan használt könyvtárakhoz.
  • Kezdeti támogatás hozzáadva (egyelőre csak értelmezési mód) a RISC-V és PPC64LE architektúrákhoz.
  • Javítások történtek a SteamPlay és a Proton réteg támogatásának javítása érdekében. Lehetővé teszi számos Linux és Windows játék futtatását a Steamről AArch64 kártyákon, például a Raspberry Pi 3-on és 4-en.
  • Továbbfejlesztett memóriakezelés, mmap teljesítmény és memóriavédelmi megsértések követése.
  • Továbbfejlesztett támogatás a klónozó rendszerhíváshoz a libc-ben. Támogatás hozzáadva az új rendszerhívásokhoz.
  • A dinamikus újrafordító motor javította az SSE/x87 regiszterekkel való munkát, hozzáadta az új gépi kódok támogatását, optimalizálta a lebegő és dupla számok konverzióját, javította a belső átmenetek feldolgozását, és egyszerűsítette az új architektúrák támogatásának hozzáadását.
  • Továbbfejlesztett ELF fájlbetöltő.

Forrás: opennet.ru

Hozzászólás