新版本的 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 和 A​​arch64 平台上执行时,显着优于 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

添加评论