将基于JIT的语言编译为WebAssembly

3

当考虑解释器的工作原理时: 解析代码 -> 生成机器字节码 -> 分配执行内存 -> 运行

那么在wasm中如何实现呢?

谢谢!

1个回答

5
如果您实际上正在实现一个解释器,那么您无需在运行时生成机器代码,因此一切都可以留在Wasm中。
您所想的实际上是即时编译器。为此,您确实需要调用嵌入器(即浏览器中的JavaScript),并在其中创建和编译新的Wasm模块,并将它们链接到运行的程序中,例如通过向现有表添加新函数。同步编译/实例化接口就是为这种用例而存在的。
在未来的版本中,可能会直接从Wasm中调用编译API,但是现在通过JavaScript是使用的方法。

谢谢!这正是我想知道的。 但是,这样做的开销是多少?从性能上来说。 - James Brown
1
@JamesBrown,很难说,没有人实际尝试过并测量过。从Wasm调用JS是便宜的。编译本身应该也相当快,但我认为目前仍远非最佳状态。 - Andreas Rossberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接