阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      WebAssembly 编译工具

      进阶工具

      WebAssembly 受许多工具支持,可帮助开发人员构建和处理源文件和生成的二进制内容。如果您是编译器作家,喜欢底层编码,或者只想尝试使用原始 WebAssembly 格式,那么这些工具非常适合您。

      当前,有两套独特的工具可供编译器作者或开发人员使用,他们希望使用由 Emscripten 之类的其他工具生成的 WebAssembly 二进制文件:

      • WABT -WebAssembly 二进制工具包
      • Binaryen- 编译器和工具链基础架构

      WABT:WebAssembly 二进制工具包

      该工具包支持在二进制 WebAssembly 格式之间转换为人类可读的文本格式。文本格式是一种 S 表达式,可以方便地将 WebAssembly 编译器的输出用于分析或调试等目的。

      请注意,WABT 支持的 S 表达式格式不是 WebAssembly 本身。它是可以表示 WebAssembly 文件内容的多种可能的文本格式之一,因此已被开发为一种方便的格式,以用于 WABT 工具进行解码和编码。开发人员可以轻松地为能够表达 WebAssembly 堆栈机器语义的任何其他文本格式构建解码器 / 编码器实现。

      wasm2wast 工具

      该工具将 WebAssembly 二进制文件转换为 S 表达式。它是一个命令行工具,将二进制文件作为输入并生成包含可读文本的输出文件。

      开发人员可以通过其他方式编辑或操作文本文件,然后将其转换回二进制格式,以进行优化算法,跟踪,插入调试挂钩等操作。

      wast2wasm 工具

      此命令行工具执行 wasm2wast 的反过程,即,它将 S 表达式 WAST 文件转换为二进制 WebAssembly 文件。

      一起使用 wasm2wast 和 wast2wasm 可以实现 WebAssembly 二进制文件的无损往返,并为开发人员提供了一种使用外部工具操纵 WebAssembly 二进制文件内容的便捷方法。

      wasm-interp 工具

      这是一个解释器,使开发人员可以从命令行独立运行 WebAssembly 二进制文件。它实现了一个基于堆栈计算机的解释器,该解释器直接解释 WebAssembly 二进制文件。这与浏览器在加载时如何将 WebAssembly 二进制文件 JIT 到其目标体系结构的本机代码不同。

      解释器对于在浏览器环境之外运行单元测试,验证 WebAssembly 二进制文件等非常有用。

      Binaryen

      Binaryen (https://github.com/WebAssembly/binaryen)是一套全面的工具,具有支持基础结构的功能,这些基础结构可用作将 WebAssembly 定位为输出格式的编译器的后端。它具有 C API 并实现了自己的程序逻辑的内部中间表示(IR),并且可以在 IR 上执行许多优化,支持代码生成的并行化等。

      例如,binaryen 用作编译器 asm2wasm 的一部分,该编译器可以将 asm.js 文件转换为 WebAssembly 文件。它还用于支持 LLVM 编译器基础结构 WebAssembly 的生成以及 Rust 的编译。

      从事编译器,高级优化技术等工作的开发人员应该利用 Binaryen 及其工具,这些工具包括可以加载和解释 WebAssembly 代码的外壳,汇编程序和反汇编程序,用于 asm.js 的转换器以及 LLVM .s 文件转换为 WebAssembly 等。 。

      强烈建议工具开发人员探索 binaryen 实现的全部功能。

      目录
      目录