Nye versioner af Box86 og Box64 emulatorer, der giver dig mulighed for at køre x86-spil på ARM-systemer

Udgivelser af Box86 0.2.6 og Box64 0.1.8 emulatorer er blevet udgivet til at køre Linux programmer bygget til x86 og x86_64 arkitekturer på ARM, ARM64, PPC64LE og RISC-V processorer. Projekter udvikles synkroniseret med ét udviklingsteam - Box86 er begrænset til muligheden for at køre 32-bit x86-applikationer, mens Box64 giver mulighed for at køre 64-bit eksekverbare filer. Projektet lægger stor vægt på at organisere lanceringen af ​​spilapplikationer, herunder muligheden for at lancere Windows builds gennem vin og Proton. Projektets kildetekster er skrevet på C-sproget og distribueret (Box86, Box64) under MIT-licensen.

Et træk ved projektet er brugen af ​​en hybrid eksekveringsmodel, hvor emulering kun anvendes på selve applikationens maskinkode og specifikke biblioteker. Generiske systembiblioteker, herunder libc, libm, GTK, SDL, Vulkan og OpenGL, erstattes med varianter, der er hjemmehørende i målplatformene. Således udføres biblioteksopkald uden emulering, hvilket giver mulighed for en betydelig ydelsesforøgelse.

Emulering af kode, der ikke har native erstatninger for målplatformen, udføres ved hjælp af den dynamiske rekompileringsteknik (DynaRec) fra et sæt maskininstruktioner til et andet. Sammenlignet med fortolkningen af ​​maskininstruktioner viser dynamisk rekompilering 5-10 gange højere ydeevne.

I præstationstests, når de kørte på Armhf- og Aarch86-platformene, overgik Box64- og Box64-emulatorerne markant QEMU- og FEX-emu-projekterne, og i nogle tests (glmark2, openarena) opnåede de en ydeevne, der var identisk med at køre en assembly, der er hjemmehørende i målplatformen . I de beregningsintensive 7-zip og dav1d benchmarks var Box64s ydeevne mellem 27 % og 53 % af den oprindelige applikation (sammenlignet med QEMU på 5-16 % og FEX-emu på 13-26 %). Derudover blev der foretaget en sammenligning med Rosetta 2-emulatoren brugt af Apple til at køre x86-kode på systemer med en ARM M1-chip. Rosetta 2 kørte den 7zip-baserede test ved 71 % af den oprindelige build og Box64 ved 57 %.

Nye versioner af Box86 og Box64 emulatorer, der giver dig mulighed for at køre x86-spil på ARM-systemer

Med hensyn til applikationskompatibilitet, ud af 165 testede spil, opnåede omkring 70% succes. Omkring 10 % mere arbejde, men med visse forbehold og begrænsninger. Understøttede spil inkluderer WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious og de fleste GameMaker-spil. Af de spil, der er noteret problemer med, nævnes spil baseret på Unity3D-motoren, som er bundet til Mono-pakken, hvis emulering ikke altid virker endnu på grund af den JIT-kompilering, der bruges i Mono, og som også har ret høj grafik krav, der ikke altid er opnåelige på ARM-tavler. Udskiftning af GTK-applikationsbiblioteker er i øjeblikket begrænset til GTK2 (erstatning af GTK3/4 er ikke fuldt implementeret).

Vigtigste ændringer i nye udgivelser:

  • Tilføjet binding til Vulkan-biblioteket. Tilføjet understøttelse af Vulkan og DXVK grafik API (implementering af DXGI, Direct3D 9, 10 og 11 oven på Vulkan).
  • Forbedrede bindinger til GTK-biblioteker. Tilføjede bindinger til gstreamer og biblioteker, der almindeligvis bruges i GTK-applikationer.
  • Tilføjet indledende support (indtil videre kun fortolkningstilstand) til RISC-V og PPC64LE arkitekturer.
  • Der er lavet fejlrettelser for at forbedre SteamPlay-understøttelsen og protonlaget. Det er muligt at køre mange Linux- og Windows-spil fra Steam på AArch64-kort såsom Raspberry Pi 3 og 4.
  • Forbedret hukommelsesstyring, mmap-adfærd og overvågning af hukommelsesbeskyttelsesbrud.
  • Forbedret understøttelse af klonsystemkald i libc. Tilføjet support til nye systemopkald.
  • I den dynamiske rekompileringsmotor er arbejdet med SSE/x87 registre blevet forbedret, understøttelse af nye maskinkoder er tilføjet, konverteringer af float- og dobbelttal er blevet optimeret, behandling af interne spring er blevet forbedret, og understøttelse af nye arkitekturer er blevet forbedret. forenklet.
  • Forbedret ELF-filuploader.

Kilde: opennet.ru

Tilføj en kommentar