Nove verzije Box86 i Box64 emulatora, omogućujući vam pokretanje x86 igara na ARM sustavima

Objavljena su izdanja Box86 0.2.6 i Box64 0.1.8 emulatora, dizajniranih za pokretanje Linux programa kompiliranih za x86 i x86_64 arhitekture na opremi s ARM, ARM64, PPC64LE i RISC-V procesorima. Projekte sinkronizirano razvija jedan tim programera - Box86 je ograničen na mogućnost pokretanja 32-bitnih x86 aplikacija, a Box64 pruža mogućnost pokretanja 64-bitnih izvršnih datoteka. Projekt posvećuje veliku pozornost organiziranju pokretanja aplikacija za igre, uključujući pružanje mogućnosti pokretanja Windows buildova putem vina i Protona. Izvorni kod za projekt napisan je u C-u i distribuiran (Box86, Box64) pod licencom MIT-a.

Značajka projekta je korištenje hibridnog izvedbenog modela, u kojem se emulacija primjenjuje samo na strojni kod same aplikacije i određene biblioteke. Tipične sistemske biblioteke, uključujući libc, libm, GTK, SDL, Vulkan i OpenGL, zamijenjene su opcijama izvornim za ciljne platforme. Na ovaj se način pozivi biblioteke izvršavaju bez emulacije, što rezultira značajnim poboljšanjima performansi.

Emulacija koda za koji ne postoje izvorne zamjene ciljne platforme izvodi se tehnikom dinamičke rekompilacije (DynaRec) iz jednog skupa strojnih instrukcija u drugi. U usporedbi s tumačenjem strojnih instrukcija, dinamička rekompilacija pokazuje 5-10 puta veću izvedbu.

U testovima performansi, emulatori Box86 i Box64, kada su izvedeni na platformama Armhf i Aarch64, značajno su nadmašili projekte QEMU i FEX-emu, a u pojedinačnim testovima (glmark2, openarena) postigli su performanse identične pokretanju sklopa koji je izvorno za cilj platforma. U računalno intenzivnim 7-zip i dav1d testovima, performanse Box64 kretale su se od 27% do 53% performansi izvorne aplikacije (za usporedbu, QEMU je pokazao rezultate od 5-16%, a FEX-emu - 13-26% ). Dodatno, napravljena je usporedba s emulatorom Rosetta 2, koji koristi Apple za pokretanje x86 koda na sustavima s M1 ARM čipom. Rosetta 2 pružila je test temeljen na 7zipu s performansama od 71% izvorne izrade, a Box64 - 57%.

Nove verzije Box86 i Box64 emulatora, omogućujući vam pokretanje x86 igara na ARM sustavima

Što se tiče kompatibilnosti s aplikacijama, od 165 testiranih igara oko 70% je uspješno radilo. Još oko 10% radi, ali uz određene rezerve i ograničenja. Podržane igre uključuju WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious i većinu GameMaker igara. Među igrama kod kojih su uočeni problemi spominju se igre bazirane na Unity3D engine-u koji je vezan uz Mono paket čija emulacija ne radi uvijek zbog JIT kompilacije koja se koristi u Monu, a također ima dosta visoki grafički zahtjevi koji nisu uvijek ostvarivi na ARM pločama. Zamjena GTK aplikacijskih biblioteka trenutno je ograničena na GTK2 (zamjena GTK3/4 nije u potpunosti implementirana).

Glavne promjene u novim izdanjima:

  • Dodano uvezivanje za biblioteku Vulkan. Dodana podrška za Vulkan i DXVK grafički API (implementacija DXGI, Direct3D 9, 10 i 11 povrh Vulkana).
  • Poboljšana povezivanja za GTK biblioteke. Dodana su povezivanja za gstreamer i biblioteke koje se obično koriste u GTK aplikacijama.
  • Dodana početna podrška (za sada samo način tumačenja) za RISC-V i PPC64LE arhitekture.
  • Napravljeni su popravci za poboljšanje podrške za SteamPlay i Proton sloj. Pruža mogućnost pokretanja mnogih Linux i Windows igara iz Steama na AArch64 pločama kao što su Raspberry Pi 3 i 4.
  • Poboljšano upravljanje memorijom, izvedba mmap-a i praćenje kršenja zaštite memorije.
  • Poboljšana podrška za poziv sustava kloniranja u libc. Dodana podrška za nove sistemske pozive.
  • Motor za dinamičko rekompiliranje poboljšao je rad sa SSE/x87 registrima, dodao podršku za nove strojne kodove, optimizirao pretvorbe brojeva s pomičnim i dvostrukim brojevima, poboljšao obradu internih prijelaza i pojednostavio dodavanje podrške za nove arhitekture.
  • Poboljšani ELF učitavač datoteka.

Izvor: opennet.ru

Dodajte komentar