【问题标题】:How to check the WebAssembly version of a wasm binary如何检查 wasm 二进制文件的 WebAssembly 版本
【发布时间】:2017-04-19 18:58:19
【问题描述】:

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


我一直在尝试使用 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 文件的版本?


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

【问题讨论】:

  • 对,这个问题应该只出现在 Wasm 的预发布版本中。
  • @JFBastien 不是重复的。该问题想知道错误的原因以及如何解决它。这个问题想知道,“给定一个wasm 文件,该文件的版本是什么?”
  • @vossad01 在这个时间点,获取生成或期望版本 0x1 以外的任何内容的生产者或消费者是一个错误。链接的问题回答了该错误的原因。
  • @JFBastien 从最新规范的角度来看,它是不可抱怨的,因此是一个错误;然而,我怀疑所有在他们的软件中提供前 MVP WebAssembly 支持的人,以及所有使用当时可用的工具编写文章和指南的人都会同意他们的工作是“一个错误”。

标签: module versioning webassembly


【解决方案1】:

如果您有 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(Minimum Viable Product)。

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

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

【讨论】:

  • 酷,我不知道我有一个命令。我有一半预计需要使用脚本语言来读取字节。
猜你喜欢
  • 1970-01-01
  • 2020-02-10
  • 2023-01-02
  • 2016-05-06
  • 2014-11-13
  • 2011-03-06
  • 2013-01-15
  • 1970-01-01
  • 2018-03-25
相关资源
最近更新 更多