Lansarea Box64 0.4.0, un emulator pentru rularea jocurilor x86 pe sisteme ARM64, RISC-V și Loongarch64

A fost publicată versiunea emulatorului Box64 0.4.0, destinat rulării programelor Linux compilate pentru arhitectura x86_64 pe hardware cu procesoare ARM64, RISC-V și Loongarch64. Proiectul se concentrează pe organizarea rulării aplicațiilor de jocuri și oferă posibilitatea de a rula versiuni Windows prin Wine și Proton. Codul sursă al proiectului este scris în C și este distribuit sub licența MIT.

O caracteristică a proiectului este utilizarea unui model hibrid de execuție, în care emulatorul este aplicat doar pe codul mașină al aplicației în sine și bibliotecilor specifice. Bibliotecile de sistem standard, inclusiv libc, libm, GTK, SDL, Vulkan și OpenGL, sunt înlocuite cu variante native pentru platformele țintă. Astfel, apelurile la biblioteci sunt efectuate fără emulație, ceea ce permite obținerea unei creșteri semnificative a performanței.

Emularea codului, pentru care nu există înlocuiri native pentru platforma țintă, se realizează folosind tehnica de recompilare dinamică (DynaRec) dintr-un set de instrucțiuni mașină într-altul. Comparativ cu interpretarea instrucțiunilor mașină, recompilarea dinamică demonstrează o performanță de 5-10 ori mai alta. performanță ridicată.

În noua versiune:

  • A fost prezentat un decodor unificat pentru prefixele codurilor de operație (prefix opcode decoder), utilizat în interpret și în toate backend-urile recompilării dinamice (DynaRec). Noua decodare procesează mai eficient combinațiile rare de prefixe ale codurilor de operație și permite evitarea 'hacking-urilor' specifice și duplicării codului în interpret și backend-urile DynaRec. Revizuirea decodorului a condus la eliminarea codului redundant, simplificarea întreținerii codului și capacitatea backend-ului DynaRec de a lucra cu combinații atipice de prefixe ale codurilor de operație.
  • Au început lucrările la un mecanism pentru eliminarea din memorie a blocurilor de cod convertite în cod nativ, dar care nu mai sunt utilizate. O astfel de optimizare permite reducerea consumului de memorie atunci când se rulază aplicații care efectuează un volum mare de operațiuni la lansare, cum ar fi Steam și aplicațiile care utilizează libcef.
  • S-a îmbunătățit suportul pentru arhitectura ARM64: a fost implementat un profil de compilare pentru CPU NVIDIA GB10. În backend-ul recompilării dinamice (DynaRec) au continuat implementările tehnicilor de optimizare a buclelor, cum ar fi scoaterea operațiunilor de setare a registrelor XMM/YMM din corpul buclei.
  • S-a îmbunătățit stabilitatea și performanța backend-ului pentru recompilarea dinamică pe arhitectura RISC-V. A fost asigurat un launch corect pentru Steam, Proton și Wine, dar pentru a lucra cu conținut DRM protejat, care necesită emularea apelurilor de sistem Windows, este necesar hardware cu suport pentru spațiul de adrese de 48 de biți (SV48) sau utilizarea unor build-uri modificate de Wine și Proton.
  • Dezvoltarea backend-ului pentru arhitectura Loongarch a avansat semnificativ, fiind acum capabilă să ruleze Steam, Wine și Proton, dar deocamdată rămâne în urmă în funcționalitate comparativ cu backend-ul pentru sistemele ARM64. Este necesară utilizarea paginilor de memorie de 4K în kernel (de obicei, Loongarch se setează implicit pe 16K). Performanța este deja suficientă pentru a rula jocuri pe CPU Loongarch 3A6000 (2.5 GHz cu 4 nuclee fizice).
    Redați video
  • S-a îmbunătățit stabilitatea modului Box32, care asigură suportul pentru fișiere executabile de 32 de biți în Box64. În acest mod, s-a observat o creștere a stabilității în funcționarea Steam pe toate arhitecturile și posibilitatea utilizării overlay-urilor interne în anumite jocuri OpenGL.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster