Emulator Box86 dan Box64 versi baru, memungkinkan Anda menjalankan game x86 di sistem ARM

Rilis emulator Box86 0.2.6 dan Box64 0.1.8 telah diterbitkan, dirancang untuk menjalankan program Linux yang dikompilasi untuk arsitektur x86 dan x86_64 pada peralatan dengan prosesor ARM, ARM64, PPC64LE dan RISC-V. Proyek dikembangkan secara serentak oleh satu tim pengembang - Box86 terbatas pada kemampuan menjalankan aplikasi x32 86-bit, dan Box64 menyediakan kemampuan untuk menjalankan executable 64-bit. Proyek ini memberikan perhatian besar pada pengorganisasian peluncuran aplikasi game, termasuk menyediakan kemampuan untuk meluncurkan build Windows melalui wine dan Proton. Kode sumber untuk proyek ini ditulis dalam C dan didistribusikan (Box86, Box64) di bawah lisensi MIT.

Fitur proyek ini adalah penggunaan model eksekusi hibrid, di mana emulasi hanya diterapkan pada kode mesin aplikasi itu sendiri dan pustaka tertentu. Pustaka sistem umum, termasuk libc, libm, GTK, SDL, Vulkan, dan OpenGL, diganti dengan opsi asli platform target. Dengan cara ini, panggilan perpustakaan dijalankan tanpa emulasi, sehingga menghasilkan peningkatan kinerja yang signifikan.

Emulasi kode yang tidak ada penggantinya yang asli pada platform target dilakukan dengan menggunakan teknik kompilasi ulang dinamis (DynaRec) dari satu set instruksi mesin ke set instruksi mesin lainnya. Dibandingkan dengan menafsirkan instruksi mesin, kompilasi ulang dinamis menunjukkan kinerja 5-10 kali lebih tinggi.

Dalam pengujian kinerja, emulator Box86 dan Box64, ketika dijalankan pada platform Armhf dan Aarch64, secara signifikan mengungguli proyek QEMU dan FEX-emu, dan dalam pengujian individu (glmark2, openarena) mereka mencapai kinerja yang identik dengan menjalankan perakitan asli ke target platform. Dalam pengujian intensif komputasi 7-zip dan dav1d, kinerja Box64 berkisar antara 27% hingga 53% dari kinerja aplikasi asli (sebagai perbandingan, QEMU menunjukkan hasil 5-16%, dan FEX-emu - 13-26% ). Selain itu, perbandingan dilakukan dengan emulator Rosetta 2, yang digunakan oleh Apple untuk menjalankan kode x86 pada sistem dengan chip M1 ARM. Rosetta 2 menyediakan pengujian berbasis 7zip dengan kinerja 71% dari versi asli, dan Box64 - 57%.

Emulator Box86 dan Box64 versi baru, memungkinkan Anda menjalankan game x86 di sistem ARM

Sedangkan untuk kompatibilitas dengan aplikasi, dari 165 game yang diuji, sekitar 70% berhasil. Sekitar 10% lainnya berfungsi, tetapi dengan syarat dan batasan tertentu. Game yang didukung termasuk WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious, dan sebagian besar game GameMaker. Di antara game-game yang permasalahannya telah dicatat, disebutkan game-game yang didasarkan pada mesin Unity3D, yang terkait dengan paket Mono, yang emulasinya tidak selalu berfungsi karena kompilasi JIT yang digunakan di Mono, dan juga memiliki cukup banyak masalah. persyaratan grafis tinggi yang tidak selalu dapat dicapai pada papan ARM. Pergantian pustaka aplikasi GTK saat ini terbatas pada GTK2 (penggantian GTK3/4 tidak sepenuhnya diterapkan).

Perubahan utama dalam rilis baru:

  • Menambahkan pengikatan untuk perpustakaan Vulkan. Menambahkan dukungan untuk API grafis Vulkan dan DXVK (implementasi DXGI, Direct3D 9, 10 dan 11 di atas Vulkan).
  • Peningkatan pengikatan untuk perpustakaan GTK. Menambahkan binding untuk gstreamer dan perpustakaan yang biasa digunakan dalam aplikasi GTK.
  • Menambahkan dukungan awal (saat ini hanya mode interpretasi) untuk arsitektur RISC-V dan PPC64LE.
  • Perbaikan telah dilakukan untuk meningkatkan dukungan untuk SteamPlay dan lapisan Proton. Memberikan kemampuan untuk menjalankan banyak game Linux dan Windows dari Steam pada papan AArch64 seperti Raspberry Pi 3 dan 4.
  • Peningkatan manajemen memori, kinerja mmap, dan pelacakan pelanggaran perlindungan memori.
  • Peningkatan dukungan untuk panggilan sistem kloning di libc. Menambahkan dukungan untuk panggilan sistem baru.
  • Mesin kompilasi ulang dinamis telah meningkatkan pekerjaan dengan register SSE/x87, menambahkan dukungan untuk kode mesin baru, mengoptimalkan konversi angka float dan ganda, meningkatkan pemrosesan transisi internal, dan menyederhanakan penambahan dukungan untuk arsitektur baru.
  • Pemuat file ELF yang ditingkatkan.

Sumber: opennet.ru

Tambah komentar