1、模块
模块是Wasm程序编译、传输和加载的单位。Wasm规范定义了两种模块格式:二进制格式和文本格式。
如果和传统汇编语言做类比,那么Wasm模块的二进制格式相当于目标文件或可执行文件格式;文本格式则相当于汇编语言。
使用汇编器可以把文本格式编译成二进制格式,使用反汇编器可以把二进制格式反编译成文本格式。
1.1 二进制格式
二进制格式是Wasm模块的主要编码格式,存储为文件时,一般以.wasm为后缀。
主要由高级语言编译器生成,也可以通过文本格式编译。
1.2 文本格式
文本格式主要是为了方便开发者理解Wasm模块,或者编写一些小型的测试代码。Wasm文本格式可以简写为WAT(WebAssembly Text),存储为文件时一般以.wat为后缀。
可以由开发者直接编写,也可以由二进制格式反编译生成。
2 执行
一个Wasm模块从二进制格式到最终被执行一共分为三个阶段:
- 解码:将二进制模块解码为内存格式。
- 验证:对模块进行静态分析,确保模块的结构满足规范要求,且函数的字节码没有不良行为。
- 执行:实例化和函数调用阶段。
3 工具
WABT是一个Wasm二进制工具箱(WebAssembly Binary Toolkit),提供了很多处理Wasm二进制格式的工具,包括WAT汇编器wat2wasm、反汇编器wasm2wat、Wasm二进制格式查看工具wasm-objdump、二进制格式验证工具wasm-validate等。
3.1 WABT安装
CMake是一个跨平台的编译工具,cmake能够输出各种各样的makefile或者project文件。