Box86 va Box64 emulyatorlarining yangi versiyalari, bu sizga x86 o'yinlarini ARM tizimlarida ishlatish imkonini beradi.

ARM, ARM86, PPC0.2.6LE va RISC-V protsessorlari bo'lgan uskunalarda x64 va x0.1.8_86 arxitekturalari uchun tuzilgan Linux dasturlarini ishga tushirish uchun mo'ljallangan Box86 64 va Box64 64 emulyatorlarining relizlari chop etildi. Loyihalar ishlab chiquvchilarning bir jamoasi tomonidan sinxron tarzda ishlab chiqiladi - Box86 32-bitli x86 ilovalarini ishga tushirish qobiliyati bilan cheklangan, Box64 esa 64-bitli bajariladigan fayllarni ishga tushirish imkoniyatini beradi. Loyiha o'yin ilovalarini ishga tushirishni tashkil etishga katta e'tibor beradi, shu jumladan vino va Proton orqali Windows tuzilmalarini ishga tushirish imkoniyatini beradi. Loyihaning manba kodi C tilida yozilgan va MIT litsenziyasi ostida tarqatilgan (Box86, Box64).

Loyihaning o'ziga xos xususiyati gibrid ijro modelidan foydalanish bo'lib, unda emulyatsiya faqat dasturning o'zi va maxsus kutubxonalarning mashina kodiga qo'llaniladi. Odatiy tizim kutubxonalari, jumladan libc, libm, GTK, SDL, Vulkan va OpenGL, maqsadli platformalarga xos variantlar bilan almashtiriladi. Shunday qilib, kutubxona qo'ng'iroqlari emulyatsiyasiz amalga oshiriladi, natijada unumdorlik sezilarli darajada oshadi.

Maqsadli platformaga xos bo'lgan o'zgartirishlar mavjud bo'lmagan kodni emulyatsiya qilish bir mashina ko'rsatmalaridan boshqasiga dinamik qayta kompilyatsiya qilish (DynaRec) texnikasi yordamida amalga oshiriladi. Mashina ko'rsatmalarini sharhlash bilan solishtirganda, dinamik qayta kompilyatsiya 5-10 baravar yuqori ishlashni namoyish etadi.

Ishlash testlarida Box86 va Box64 emulyatorlari Armhf va Aarch64 platformalarida bajarilganda QEMU va FEX-emu loyihalaridan sezilarli darajada oshib ketdi va individual testlarda (glmark2, openarena) ular maqsadli montajni ishga tushirish bilan bir xil ishlashga erishdilar. platforma. Intensiv hisoblash 7-zip va dav1d testlarida Box64-ning ishlashi mahalliy dasturning ishlashining 27% dan 53% gacha bo'lgan (taqqoslash uchun QEMU 5-16% va FEX-emu - 13-26% natijalarni ko'rsatdi. ). Bundan tashqari, Apple tomonidan M2 ARM chipli tizimlarda x86 kodini ishlatish uchun ishlatiladigan Rosetta 1 emulyatori bilan taqqoslash amalga oshirildi. Rosetta 2 7zip-ga asoslangan testni mahalliy qurilishning 71% va Box64 - 57% ishlashi bilan ta'minladi.

Box86 va Box64 emulyatorlarining yangi versiyalari, bu sizga x86 o'yinlarini ARM tizimlarida ishlatish imkonini beradi.

Ilovalar bilan muvofiqlikka kelsak, sinovdan o'tgan 165 ta o'yindan taxminan 70% muvaffaqiyatli ishladi. Taxminan yana 10% ishlaydi, lekin ma'lum rezervasyonlar va cheklovlar bilan. QoΚ»llab-quvvatlanadigan oΚ»yinlarga WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Service Delicious va koΚ»pgina GameMaker oΚ»yinlari kiradi. Muammolar qayd etilgan o'yinlar orasida Mono to'plamiga bog'langan Unity3D dvigateliga asoslangan o'yinlar esga olinadi, ularning emulyatsiyasi Mono-da qo'llanilgan JIT kompilyatsiyasi tufayli har doim ham ishlamaydi, shuningdek, adolatli. ARM platalarida har doim ham erishib bo'lmaydigan yuqori grafik talablari. GTK ilovalari kutubxonalarini almashtirish hozirda GTK2 bilan cheklangan (GTK3/4 ni almashtirish to'liq amalga oshirilmagan).

Yangi nashrlardagi asosiy o'zgarishlar:

  • Vulkan kutubxonasi uchun qo'shilgan bog'lash. Vulkan va DXVK grafik API uchun qo'shimcha qo'llab-quvvatlash (Vulkanning tepasida DXGI, Direct3D 9, 10 va 11-ni amalga oshirish).
  • GTK kutubxonalari uchun yaxshilangan ulanishlar. GTK ilovalarida tez-tez ishlatiladigan gstreamer va kutubxonalar uchun biriktirmalar qo'shildi.
  • RISC-V va PPC64LE arxitekturalari uchun dastlabki yordam qoβ€˜shildi (hozircha faqat sharhlash rejimi).
  • SteamPlay va Proton qatlamini qo'llab-quvvatlashni yaxshilash uchun tuzatishlar kiritildi. Raspberry Pi 64 va 3 kabi AArch4 platalarida Steam'dan ko'plab Linux va Windows o'yinlarini ishga tushirish imkoniyatini beradi.
  • Yaxshilangan xotira boshqaruvi, mmap ishlashi va xotira himoyasi buzilishini kuzatish.
  • libc-da klon tizimi chaqiruvi uchun yaxshilangan yordam. Yangi tizim qo'ng'iroqlari uchun qo'shimcha qo'llab-quvvatlash.
  • Dinamik qayta kompilyatsiya mexanizmi SSE/x87 registrlari bilan ishlashni yaxshiladi, yangi mashina kodlari uchun qo'llab-quvvatlash qo'shildi, float va juft raqamlarni optimallashtirilgan konvertatsiya qilish, ichki o'tishlarni qayta ishlashni yaxshilash va yangi arxitekturalar uchun qo'llab-quvvatlashni qo'shishni soddalashtirdi.
  • ELF fayl yuklagichi yaxshilandi.

Manba: opennet.ru

a Izoh qo'shish