WebAssembly 运行 如何在任何机器上运行?

How can WebAssembly run on any machine?

最近看了几个 WebAssembly (Wasm) 的演示文稿。我知道 Wasm 是一个编译目标,静态类型 语言如 C/C++ 可以编译成。然后浏览器可以 运行 Wasm 代码,并以某种方式将其转换为各自机器的机器代码。像这样:

问题:

浏览器如何将 Wasm 转换为合适的机器码?

浏览器具有 JavaScript 的解释器和 JIT 编译器。这些通常非常复杂,浏览器必须做很多“工作”才能为机器创建优化的 JIT 代码。

使用 webassembly 确实没什么不同。浏览器仍然需要 JIT 代码。然而,这里的工作要简单得多。选择 WebAssembly 指令集是为了使这项任务相对简单。尽管如此,浏览器仍然对 WebAssembly 模块进行“分层”编译。

如果您想了解具体细节,最好的办法是查看浏览器的源代码!