【问题标题】:Webassembly fixup section size at the end of every section?每个部分末尾的Webassembly修复部分大小?
【发布时间】:2017-12-28 20:32:37
【问题描述】:

在将 wat 编译为 wasm emscripten 时,我会为每个部分提供 FIXUP 大小。在规范中,它从未声明在原始字节码中我们必须在每个部分的末尾包含部分大小。我在这里有点困惑。可以说省略 FIXUP 是否安全,或者背后的原因是什么?节代码后面的节大小是0。我的意思是你不应该在阅读一节之前知道大小吗?没有意义吗?我觉得这两个部分大小的顺序应该颠倒。

希望能得到一些见解。

0000029: 00                                        ; section code
000002a: 00                                        ; section size (guess)
000002b: 04                                        ; string length
000002c: 6e61 6d65                                name  ; custom section name
0000030: 01                                        ; function name type
0000031: 00                                        ; subsection size (guess)
0000032: 01                                        ; num functions
0000033: 00                                        ; function index
0000034: 06                                        ; string length
0000035: 6164 6454 776f                           test  ; func name 0
0000031: 09                                        ; FIXUP subsection size
000003b: 02                                        ; local name type
000003c: 00                                        ; subsection size (guess)
000003d: 01                                        ; num functions
000003e: 00                                        ; function index
000003f: 01                                        ; num locals
0000040: 00                                        ; local index
0000041: 00                                        ; string length
000003c: 05                                        ; FIXUP subsection size
000002a: 17                                        ; FIXUP section size

【问题讨论】:

    标签: webassembly


    【解决方案1】:

    注意左边的字节偏移:所有标记为 FIXUP 的行都指的是之前写为 0 并标记为“猜测”的字节位置。

    与其他 Wasm 生成器一样,Emscripten 一次生成二进制文件,这意味着它在必须生成它们时还不知道节大小。因此,它会写入 00 并在相应部分完成并且已知其大小后对其进行回补。

    【讨论】:

    • 嗨,有没有办法强制生成已经打过补丁的 wasm 代码? (所以没有 0 个大小和 FIXUP 字节)?
    猜你喜欢
    • 1970-01-01
    • 2019-10-06
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多