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 实现的全部功能。

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了