1

给定一个.wasm文件,我如何检查二进制编码的版本


我一直在尝试使用 WebAssembly,但已经开始遇到我理解的版本控制问题,从而导致以下消息:

错误:Wasm.instantiateModule():Wasm 解码失败结果 = 预期版本 0c 00 00 00,找到 0b 00 00 00 @+4

或者

错误:Wasm.instantiateModule():Wasm 解码失败结果 = 预期版本 0c 00 00 00,找到 01 00 00 00 @+4

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


编辑:根据最近的发行说明,这是一个有时间限制的问题,未来所有程序集的版本将0x1.

4

1 回答 1

7

如果您有 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(最小可行产品)。

在某些时候,我确信标准的 linuxfile命令会识别 WebAssembly 文件并打印版本。

完整格式在WebAssembly 二进制编码页面中描述。

于 2017-04-19T21:24:00.620 回答