新版本的 Box86 和 Box64 模擬器,讓您在 ARM 系統上運行 x86 遊戲

Box86 0.2.6 和 Box64 0.1.8 模擬器版本已經發布,旨在在配備 ARM、ARM86、PPC86LE 和 RISC-V 處理器的裝置上運行為 x64 和 x64_64 架構編譯的 Linux 程式。 專案由一組開發人員同步開發 - Box86 僅限於運行 32 位元 x86 應用程式的能力,而 Box64 提供運行 64 位元可執行檔的能力。 該專案非常注重組織遊戲應用程式的啟動,包括提供透過 wine 和 Proton 啟動 Windows 建置的能力。 該專案的源代碼是用 C 語言編寫的,並根據 MIT 許可證分發(Box86、Box64)。

該專案的一個特點是使用混合執行模型,其中模擬僅應用於應用程式本身和特定庫的機器程式碼。 典型的系統函式庫(包括 libc、libm、GTK、SDL、Vulkan 和 OpenGL)皆替換為目標平臺本機的選項。 這樣,函式庫呼叫就可以在不進行模擬的情況下執行,從而顯著提高效能。

使用從一組機器指令到另一組機器指令的動態重新編譯 (DynaRec) 技術來執行對目標平臺本機沒有替換的程式碼的模擬。 與解釋機器指令相比,動態重新編譯的效能提高了 5-10 倍。

在效能測試中,Box86 和Box64 模擬器在Armhf 和Aarch64 平台上執行時,顯著優於QEMU 和FEX-emu 項目,並且在單獨的測試(glmark2、openarena)中,它們實現了與運行目標本機程式集相同的效能平台。 在計算密集型7-zip 和dav1d 測試中,Box64 的效能範圍為本機應用程式效能的27% 到53%(作為比較,QEMU 顯示的結果為5-16%,FEX-emu - 13-26% ) )。 此外,還與 Apple 使用 Rosetta 2 模擬器在配備 M86 ARM 晶片的系統上運行 x1 程式碼進行了比較。 Rosetta 2 提供了基於 7zip 的測試,其性能為本機構建的 71%,而 Box64 為 57%。

新版本的 Box86 和 Box64 模擬器,讓您在 ARM 系統上運行 x86 遊戲

至於與應用程式的兼容性,在測試的 165 款遊戲中,約 70% 可以成功運行。 大約還有 10% 的工作,但有一定的保留和限制。 支援的遊戲包括 WorldOfGoo、Airline Tycoon Deluxe、FTL、Undertale、A Risk of Rain、Cook Serve Delicious 和大多數 GameMaker 遊戲。 在已註意到問題的遊戲中,提到了基於 Unity3D 引擎的遊戲,該引擎與 Mono 包綁定,由於 Mono 中使用的 JIT 編譯,其模擬並不總是有效,而且還具有相當的性能。高圖形要求在ARM 主機板上並不總是能夠實現。 GTK應用程式庫的替換目前僅限於GTK2(GTK3/4的替換尚未完全實現)。

新版本主要變更:

  • 新增了 Vulkan 庫的綁定。 新增了對 Vulkan 和 DXVK 圖形 API 的支援(在 Vulkan 之上實現 DXGI、Direct3D 9、10 和 11)。
  • 改進了 GTK 庫的綁定。 新增了 GTK 應用程式中常用的 gstreamer 和庫的綁定。
  • 新增了對 RISC-V 和 PPC64LE 架構的初始支援(目前僅解釋模式)。
  • 已進行修復以改善對 SteamPlay 和 Proton 層的支援。 能夠在 AArch64 主機板(例如 Raspberry Pi 3 和 4)上運行 Steam 上的許多 Linux 和 Windows 遊戲。
  • 改進了記憶體管理、mmap 效能和記憶體保護違規追蹤。
  • 改進了對 libc 中克隆系統呼叫的支援。 新增了對新系統呼叫的支援。
  • 動態重新編譯引擎改進了SSE/x87 暫存器的工作,增加了對新機器碼的支持,優化了浮點數和雙精度數的轉換,改進了內部轉換的處理,並簡化了對新架構的支援的添加。
  • 改進了 ELF 檔案載入器。

來源: opennet.ru

添加評論