Nove verzije Box86 i Box64 emulatora koje vam omogućavaju pokretanje x86 igara na ARM sistemima

Objavljena su izdanja emulatora Box86 0.2.6 i Box64 0.1.8 za pokretanje Linux programa izgrađenih za x86 i x86_64 arhitekture na ARM, ARM64, PPC64LE i RISC-V procesorima. Projekti se razvijaju sinhronizovano sa jednim razvojnim timom - Box86 je ograničen na mogućnost pokretanja 32-bitnih x86 aplikacija, dok Box64 pruža mogućnost pokretanja 64-bitnih izvršnih datoteka. Projekat posvećuje veliku pažnju organiziranju pokretanja aplikacija za igre, uključujući mogućnost pokretanja Windows buildova kroz wine i Proton. Izvorni tekstovi projekta su napisani na jeziku C i distribuirani (Box86, Box64) pod MIT licencom.

Karakteristika projekta je korištenje hibridnog modela izvršavanja, u kojem se emulacija primjenjuje samo na strojni kod same aplikacije i određene biblioteke. Generičke sistemske biblioteke, uključujući libc, libm, GTK, SDL, Vulkan i OpenGL, zamjenjuju se varijantama koje su izvorne za ciljne platforme. Dakle, pozivi biblioteke se izvršavaju bez emulacije, što omogućava značajno povećanje performansi.

Emulacija koda koji nema izvorne zamjene za ciljnu platformu izvodi se pomoću tehnike dinamičke rekompilacije (DynaRec) iz jednog skupa strojnih instrukcija u drugi. U poređenju sa interpretacijom mašinskih instrukcija, dinamička rekompilacija pokazuje 5-10 puta veće performanse.

U testovima performansi, kada su radili na platformama Armhf i Aarch86, emulatori Box64 i Box64 su značajno nadmašili QEMU i FEX-emu projekte, a u nekim testovima (glmark2, openarena) postigli su performanse identične pokretanju sklopa koji je izvorni za ciljnu platformu. . U 7-zip i dav1d benčmarkovima sa intenzivnim računarstvom, performanse Box64 bile su između 27% i 53% u odnosu na izvornu aplikaciju (u poređenju sa QEMU na 5-16% i FEX-emu sa 13-26%). Dodatno, napravljeno je poređenje sa Rosetta 2 emulatorom koji koristi Apple za pokretanje x86 koda na sistemima sa ARM M1 čipom. Rosetta 2 je provela 7zip-bazirani test na 71% izvorne verzije, a Box64 na 57%.

Nove verzije Box86 i Box64 emulatora koje vam omogućavaju pokretanje x86 igara na ARM sistemima

Što se tiče kompatibilnosti aplikacija, od 165 testiranih igara, oko 70% je uspješno zarađeno. Oko 10% više posla, 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. Od igara s kojima su uočeni problemi spominju se igre bazirane na Unity3D engine-u, koji je vezan za Mono paket, čija emulacija još uvijek ne radi zbog JIT kompilacije koja se koristi u Mono, a također ima prilično visoku grafiku zahtjevi koji nisu uvijek ostvarivi na ARM pločama. Zamjena biblioteka GTK aplikacija trenutno je ograničena na GTK2 (zamjena GTK3/4 nije u potpunosti implementirana).

Glavne promjene u novim izdanjima:

  • Dodato vezivanje za Vulkan biblioteku. Dodata podrška za Vulkan i DXVK grafički API (implementacija DXGI, Direct3D 9, 10 i 11 na vrhu Vulkana).
  • Poboljšano povezivanje za GTK biblioteke. Dodata veza za gstreamer i biblioteke koje se obično koriste u GTK aplikacijama.
  • Dodata početna podrška (za sada samo način interpretacije) za RISC-V i PPC64LE arhitekture.
  • Ispravke grešaka su napravljene kako bi se poboljšala podrška za SteamPlay i Proton sloj. Moguće je pokrenuti mnoge Linux i Windows igre iz Steama na AArch64 pločama kao što su Raspberry Pi 3 i 4.
  • Poboljšano upravljanje memorijom, ponašanje mmap-a i praćenje kršenja zaštite memorije.
  • Poboljšana podrška za kloniranje sistemskog poziva u libc. Dodata podrška za nove sistemske pozive.
  • U motoru za dinamičku rekompilaciju, poboljšan je rad sa SSE/x87 registrima, dodata je podrška za nove mašinske kodove, optimizovane su konverzije float i duplih brojeva, poboljšana je obrada internih skokova i podrška za nove arhitekture pojednostavljeno.
  • Unapređeni ELF fajl uploader.

izvor: opennet.ru

Dodajte komentar