Emulatori Box64 0.4.0 është publikuar, i projektuar për t'u ekzekutuar Linux- programe të përpiluara për arkitekturën x86_64, në harduer me procesorë ARM64, RISC-V dhe Loongarch64. Projekti i kushton vëmendje të madhe organizimit të lançimit të aplikacioneve të lojërave dhe ofron mundësinë për të lançuar Windows-ndërtohet nëpërmjet Wine dhe Proton. Kodi burimor i projektit është shkruar në C dhe shpërndahet sipas licencës MIT.
Një tipar i veçantë i projektit është përdorimi i një modeli ekzekutimi hibrid, në të cilin emulimi zbatohet vetëm në kodin e makinës së vetë aplikacionit dhe bibliotekave specifike. Bibliotekat tipike të sistemit, duke përfshirë libc, libm, GTK, SDL, Vulkan dhe OpenGL, zëvendësohen me opsione vendase në platformat e synuara. Në këtë mënyrë, thirrjet e bibliotekës ekzekutohen pa emulim, duke rezultuar në përfitime të konsiderueshme të performancës.
Emulimi i kodit për të cilin nuk janë të disponueshme zëvendësime native për platformën e synuar kryhet duke përdorur një teknikë rikompilimi dinamik (DynaRec) nga një grup udhëzimesh makine në një tjetër. Krahasuar me interpretimin e udhëzimeve të makinës, rikompilimi dinamik demonstron performancë 5-10 herë më të madhe. performancë e lartë.
Në versionin e ri:
- Është prezantuar një dekoder i unifikuar i prefiksit opkod, i zbatuar në interpretues dhe në të gjitha backend-et e rikompilimit dinamik (DynaRec). Dekoderi i ri trajton kombinimet e rralla të prefikseve opkod në mënyrë më konsistente, duke eliminuar ndërhyrje specifike dhe dyfishimin e kodit në interpretues dhe backend-et e DynaRec. Ridizajnimi i dekoderit heq kodin e tepërt, thjeshton mirëmbajtjen e bazës së kodit dhe i mundëson DynaRec të trajtojë kombinime atipike të prefikseve opkod.
- Ka filluar puna për një mekanizëm për heqjen nga memoria e blloqeve të kodit të konvertuar në kod vendas, por që nuk përdoren më. Ky optimizim ndihmon në uljen e konsumit të memories gjatë nisjes së aplikacioneve që kryejnë një numër të madh operacionesh në nisje, siç është Steam dhe aplikacionet që përdorin libcef.
- Mbështetje e përmirësuar për arkitekturën ARM64: Është zbatuar një profil ndërtimi për CPU-në NVIDIA GB10. Sfondi i rikompilimit dinamik (DynaRec) ka vazhduar të zbatojë teknika të optimizimit të lakut, të tilla si zhvendosja e operacioneve të caktimit të regjistrave XMM/YMM jashtë trupit të lakut.
- Stabilitet dhe performancë e përmirësuar e backend-it të rikompilimit dinamik për arkitekturën RISC-V. Kjo siguron nisjen e duhur të Steam, Proton dhe Wine, por kërkon emulim të thirrjeve të sistemit për përmbajtje të mbrojtur nga DRM. Windows, kërkon pajisje harduerike me mbështetje për hapësirën e adresave 48-bit (SV48) ose përdorimin e versioneve të modifikuara të Wine dhe Proton.
- Zhvillimi i backend-it për arkitekturën Loongarch ka bërë përparim të konsiderueshëm, duke i mundësuar asaj të ekzekutojë Steam, Wine dhe Proton, por ende mbetet prapa backend-it për sistemet ARM64 në funksionalitet. Aktualisht kërkon 4K faqe memorieje në bërthamë (Loongarch zakonisht vendos parazgjedhjen në 16K). Performanca tani është e mjaftueshme për të ekzekutuar lojëra në CPU-në Loongarch 3A6000 (2.5 GHz me 4 bërthama fizike).
- Stabiliteti i modalitetit Box32, i cili ofron mbështetje për ekzekutuesit 32-bit në Box64, është përmirësuar. Ky modalitet përmirëson stabilitetin e Steam në të gjitha arkitekturat dhe mundëson përdorimin e mbivendosjeve brenda lojës në disa lojëra OpenGL.
Burimi: opennet.ru
