WATaBoy:将 Game Boy 指令 JIT 编译为 WebAssembly,性能超越原生解释器

humphri.es · ⭐️ 8/10 · 2026-06-29

名为 WATaBoy 的项目证明,将 Game Boy CPU 指令 JIT 编译为 WebAssembly 可以获得比原生解释器更快的性能。该方法利用了 Web 浏览器已有的 WebAssembly JIT 编译基础架构。 这具有重要意义,因为它展示了一种新颖的方法来克服平台限制(例如 iOS 禁止 JIT 编译),即使用 WebAssembly 作为可移植的高性能目标。这有望在受限平台上实现更流畅的模拟,并启发其他复古系统的类似方案。 项目指出,原生解释器的开销大约为 1000%,而 WebAssembly JIT 的开销约为 20%,因此 JIT 方法更快。然而,在该工作负载下,Firefox 比 Chrome/Safari 慢约 25%。

背景

JIT(即时编译)在运行时将代码翻译为本地机器码以提高性能。WebAssembly(WASM)是一种低级二进制格式,旨在在 Web 浏览器中实现接近原生的速度。传统上,Game Boy 模拟器使用解释器或原生 JIT,但由于安全限制,这些方法在某些平台(如 iOS)上可能不被允许。WATaBoy 则从 Game Boy 指令生成 WASM,并依赖浏览器的 WASM JIT 引擎。

参考链接

社区讨论

评论者称赞该项目是令人印象深刻的本科学位作品,并指出利用浏览器的 JIT 绕过 iOS 限制非常巧妙。有人指出 Firefox 的 WASM JIT 比 Chrome/Safari 慢。还有人评论道,鉴于开销差异,超越原生解释器是预料之中的事,但拥有一个基于 WASM 的 Game Boy JIT 运行时仍然很酷。

阅读原文