如何检查 wasm 二进制文件的 WebAssembly 版本

How to check the WebAssembly version of a wasm binary

给定一个 .wasm 文件,我如何检查 the version of the binary encoding


我一直在尝试使用 WebAssembly,但开始遇到我所理解的版本控制问题,导致出现如下消息:

Error: Wasm.instantiateModule(): Wasm decoding failedResult = expected version 0c 00 00 00, found 0b 00 00 00 @+4

Error: Wasm.instantiateModule(): Wasm decoding failedResult = expected version 0c 00 00 00, found 01 00 00 00 @+4

除了 运行 它针对不支持给定文件的 WebAssembly 嵌入器得到上述错误之外,我如何检查 wasm 文件的版本?


编辑:根据最近的发行说明,这是一个限时问题,going forward the version for all assemblies will 0x1

如果您有 hexdump 实用程序,您可以查看文件的字节 4-7 字节。例如,使用 Linux hexdump 实用程序:

$ hexdump -C -n8 examples_c/hello_sdl.wasm | head
00000000  00 61 73 6d 01 00 00 00                           |.asm....|
00000008

前四个字节是 wasm 幻数(0x0061736d 或 '\00asm')。接下来的 4 个字节是版本(小端)。因此,在上面的示例中,版本为 0x01,即 MVP(最小可行产品)。

在某些时候,我确定标准 linux file 命令将识别 WebAssembly 文件并打印版本。

完整格式在 WebAssembly binary encoding page 中描述。