ARM sistemlerinde x86 oyunlarını çalıştırmanıza olanak tanıyan Box64 ve Box86 emülatörlerinin yeni sürümleri

ARM, ARM86, PPC0.2.6LE ve RISC-V işlemcili ekipmanlarda x64 ve x0.1.8_86 mimarileri için derlenmiş Linux programlarını çalıştırmak üzere tasarlanmış Box86 64 ve Box64 64 emülatörlerinin sürümleri yayınlandı. Projeler, bir geliştirici ekibi tarafından eşzamanlı olarak geliştirilir - Box86, 32 bit x86 uygulamalarını çalıştırma yeteneğiyle sınırlıdır ve Box64, 64 bit yürütülebilir dosyaları çalıştırma yeteneği sağlar. Proje, Windows yapılarını şarap ve Proton aracılığıyla başlatma olanağı sağlamak da dahil olmak üzere oyun uygulamalarının başlatılmasını organize etmeye büyük önem veriyor. Projenin kaynak kodu C dilinde yazılmış ve MIT lisansı altında (Box86, Box64) dağıtılmıştır.

Projenin bir özelliği, öykünmenin yalnızca uygulamanın makine koduna ve belirli kitaplıklara uygulandığı hibrit yürütme modelinin kullanılmasıdır. Libc, libm, GTK, SDL, Vulkan ve OpenGL dahil olmak üzere tipik sistem kitaplıkları, hedef platformlara özgü seçeneklerle değiştirilir. Bu şekilde kütüphane çağrıları emülasyon olmadan yürütülür ve bu da önemli performans kazanımları sağlar.

Hedef platforma özgü hiçbir değişikliğin bulunmadığı kodun emülasyonu, bir makine talimatları kümesinden diğerine dinamik yeniden derleme (DynaRec) tekniği kullanılarak gerçekleştirilir. Makine talimatlarının yorumlanmasıyla karşılaştırıldığında, dinamik yeniden derleme 5-10 kat daha yüksek performans gösterir.

Performans testlerinde Box86 ve Box64 emülatörleri, Armhf ve Aarch64 platformlarında çalıştırıldığında QEMU ve FEX-emu projelerinden önemli ölçüde daha iyi performans gösterdi ve bireysel testlerde (glmark2, openarena) hedefe özgü bir derlemeyi çalıştırmayla aynı performansı elde ettiler platformu. Bilgi işlem yoğun 7-zip ve dav1d testlerinde Box64'ün performansı, yerel uygulamanın performansının %27 ila %53'ü arasında değişiyordu (karşılaştırma için, QEMU %5-16 ve FEX-emu - %13-26 sonuçlar gösterdi) ). Ayrıca Apple'ın M2 ARM çipli sistemlerde x86 kodunu çalıştırmak için kullandığı Rosetta 1 emülatörüyle de karşılaştırma yapıldı. Rosetta 2, 7zip tabanlı teste yerel yapının %71'ini ve Box64 - %57'sini performansla sağladı.

ARM sistemlerinde x86 oyunlarını çalıştırmanıza olanak tanıyan Box64 ve Box86 emülatörlerinin yeni sürümleri

Uygulamalarla uyumluluğa gelince, test edilen 165 oyundan yaklaşık% 70'i başarıyla çalıştı. Yaklaşık %10'luk bir kısım da çalışıyor, ancak belirli çekinceler ve kısıtlamalar var. Desteklenen oyunlar arasında WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious ve GameMaker oyunlarının çoğu yer alır. Sorun yaşanan oyunlar arasında Mono paketine bağlı Unity3D motorunu temel alan, Mono'da kullanılan JIT derlemesi nedeniyle emülasyonu her zaman çalışmayan ve aynı zamanda oldukça yüksek performansa sahip olan oyunlardan bahsedilmektedir. ARM kartlarında her zaman elde edilemeyen yüksek grafik gereksinimleri. GTK uygulama kitaplıklarının değiştirilmesi şu anda GTK2 ile sınırlıdır (GTK3/4'ün değiştirilmesi tam olarak uygulanmamaktadır).

Yeni sürümlerdeki ana değişiklikler:

  • Vulkan kütüphanesine bağlama eklendi. Vulkan ve DXVK grafik API'si için destek eklendi (Vulkan'ın üzerinde DXGI, Direct3D 9, 10 ve 11'in uygulanması).
  • GTK kitaplıkları için geliştirilmiş bağlamalar. GTK uygulamalarında yaygın olarak kullanılan gstreamer ve kitaplıklar için bağlamalar eklendi.
  • RISC-V ve PPC64LE mimarileri için başlangıç ​​desteği (şimdilik yalnızca yorumlama modu) eklendi.
  • SteamPlay ve Proton katmanı desteğini geliştirmek için düzeltmeler yapıldı. Steam'den birçok Linux ve Windows oyununu Raspberry Pi 64 ve 3 gibi AArch4 anakartlarında çalıştırma olanağı sağlar.
  • Geliştirilmiş bellek yönetimi, mmap performansı ve bellek koruma ihlali takibi.
  • Libc'de klon sistemi çağrısı için geliştirilmiş destek. Yeni sistem çağrıları için destek eklendi.
  • Dinamik yeniden derleme motoru, SSE/x87 kayıtları ile çalışmayı iyileştirdi, yeni makine kodları için destek ekledi, değişken ve çift sayıların dönüşümlerini optimize etti, dahili geçişlerin iyileştirilmiş işlenmesini sağladı ve yeni mimariler için destek eklenmesini basitleştirdi.
  • Geliştirilmiş ELF dosya yükleyicisi.

Kaynak: opennet.ru

Yorum ekle