Box86和Box64的新版本已经发布

Box86 0.2.6 和 Box64 0.1.8 模拟器的新版本已于近日发布。这两个项目由同一开发团队同时进行开发。

Box86 仅限于在非 x86 Linux 系统(例如 ARM)上运行 32 位 x86 应用程序(例如游戏)(主机系统必须是 32 位小端序)。因此,运行和编译 Box86 需要一个 32 位子系统。Box86 在纯 64 位系统上无法使用。此外,编译 Box86 还需要一个 32 位工具链。

由于 Box86 使用了一些“系统”库的原生版本,例如 libc、libm、SDL 和 OpenGL,因此它很容易与大多数应用程序集成和使用,并且在许多情况下性能可以达到惊人的高。

Box64 也遵循同样的原则,但它允许运行 64 位可执行文件。该项目非常注重游戏应用程序的启动方式,包括通过 Wine 和 Proton 启动 Windows 版本。

该项目的一个关键特性是采用了混合执行模型,其中仅对应用程序自身的机器代码和特定库应用模拟。通用系统库,包括 libc、libm、GTK、SDL、Vulkan 和 OpenGL,都被替换为目标平台的原生版本。因此,库调用无需模拟即可执行,从而显著提升了性能。

对于目标平台上缺少原生替代代码的情况,可以使用动态重编译 (DynaRec) 技术来模拟代码,该技术可以将一种机器指令集转换为另一种。与解释机器指令相比,动态重编译的性能提升了 5 到 10 倍。

在性能测试中,当在 Armhf 和 A​​arch64 平台上运行时,Box86 和 Box64 模拟器明显优于 QEMU 和 FEX-emu 项目,并且在某些测试(glmark2、openarena)中达到了与运行目标平台的本地汇编相同的性能。

就应用兼容性而言,在测试的165款游戏中,约70%成功实现。约10%的游戏需要更多工作,但存在一定的限制。

在注意到问题的游戏中,提到了基于 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 和质子层的兼容性。 可以在 Raspberry Pi 64 和 3 等 AArch4 板上运行 Steam 上的许多 Linux 和 Windows 游戏。
  • 改进了内存管理、mmap 行为和内存保护违规监控。
  • 改进了对 libc 中克隆系统调用的支持。 添加了对新系统调用的支持。
  • 在动态重新编译引擎中,改进了对 SSE/x87 注册表的工作,添加了对新机器码的支持,优化了浮点和双精度转换,改进了内部分支处理,简化了对新架构的支持。
  • 改进的 ELF 文件加载器。

最后,如果您有兴趣了解更多信息,可以点击以下链接查看详情。


在 Google 中将其添加为首选来源