Wasm JS api 实现

Wasm JS api implementation

我目前正在重写我们在编程语言课程中使用的语言的后端以针对 wasm 而不是 MIPS。

所以要非常清楚,我不是在谈论使用 wasm,而是在创建 wasm 文件并使其正常运行。

我目前正在查看导入和导出,webassembly 规范(目前)并未涵盖 wasm/js api 的实际工作方式。例如,当导入诸如 JS console.log 函数或其他函数之类的东西时,JS 引擎是否只搜索导入部分并查找编码的名称并将其与函数匹配?

我知道这不是通常的“代码问题”,但我似乎找不到合适的地方查看。

I'm currently looking on import and export and the webassembly specification (as for now) does not cover how the wasm/js api actually works.

这就是规范的美妙之处,它可以有各种不同的实现!

For example when importing something like JS console.log function or another function does the JS engine just search the import section and looks for the names encoded and match it with a function?

这似乎是一个合理的实现。当您创建一个 WebAssembly 模块时,您提供命名的导入函数,这些函数必须与 WebAssembly 模块导入部分中的名称相匹配。

webassemblyjs 是一个基于 JavaScript 的 WebAssembly 解释器。您可以在此处查看它如何将外部提供的导入与模块的预期导入相匹配:

https://github.com/xtuc/webassemblyjs/blob/master/packages/webassemblyjs/src/interpreter/index.js#L57