WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用

WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用

About: 简介

工欲善其事, 必先利其器;
上一节WebAssembly 与 Rust 编程系列01 WebAssembly 是什么
我们讲了 WebAssembly 的一些基本概念, 讲到了WebAssembly一个重要的目标就是:
可读,可调式
实现这一目标的基础,就是要配置好相关的工具,这里最基本的就是 wabt
wabt-github

本篇文章主要介绍

  • wabt 的特性
  • wabt 的编译安装
  • wabt 的简单使用

wabt 的特性

wabt包含了一系列针对 WebAssembly 的工具, 包括以下:

  • wat2wasm: WebAssembly 文本格式转换成二进制格式
  • wasm2wat: wat2wasm的逆过程,把二进制格式转换成文本格式
  • wasm-objdump: 输出二进制格式文件的相关信息,类似于 objdump.
  • wasm-interp: 终端运行二进制格式文件
  • wasm-decompile: 二进制格式文件转换为 类C语法文本格式文件
  • wat-desugar: 把文本格式文件转换为指定的解析器二进制文件,包括s-expressions, flat syntax, 或者两者混合
  • wasm2c: 转换二进制格式文件为C源文件和头文件
  • wasm-strip: 移除二进制文件中 sections 相关代码
  • wasm-validate: 校验二进制文件
  • wast2json: 转换二进制文件为Json文件
  • wasm-opcodecnt: 输出结构中opcode的使用数量
  • spectest-interp: 读取指定json文件并在解释器中运行

wabt 的编译安装

wabt 可以直接使用github仓库中 release 预编译好的版本, 当然选择本地编译也是相当简单的

下载源码

git clone --recursive https://github.com/WebAssembly/wabt
cd wabt

安装Cmake

cmake

E:\WebAssembly\austin_demo>cmake --version
cmake version 3.14.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

查看当前系统支持的平台

cmake --help
Generators

The following generators are available on this platform (* marks default):
  Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
                                 Use -A option to specify architecture.
* Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
                                 Optional [arch] can be "Win64" or "IA64".
  Visual Studio 9 2008 [arch]  = Generates Visual Studio 2008 project files.
                                 Optional [arch] can be "Win64" or "IA64".

编译

mkdir build
cd build

cmake .. -DCMAKE_BUILD_TYPE=DBUG -DCMAKE_INSTALL_PREFIX=..\ -G "Visual Studio 15 2017"
cmake --build . --config DEBUG --target install

WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用_第1张图片

编译后输出:
WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用_第2张图片

添加到环境变量

把 wabt/bin 相应的路径加到系统环境变量

使用示例

  • 转换文本格式为wasm
wat2wasm test.wat -o test.wasm
  • 逆向
wasm2wat test.wasm -o test.wat
  • 在终端运行
wasm-interp test.wasm

文本格式转换为wasm

下面这段代码,定义了相加函数,并进行了导出

(module
	(func $add (param $lhs i32) (param $rhs i32) (result i32)
		(i32.add
			(get_local $lhs)
			(get_local $rhs)
		)
	)
	(export "add" (func $add))
)

现在可以运用上面的wat2wasm 把文本文件转换为 .wasm二进制文件

wat2wasm add.wat -o add.wasm

查看二进制文件信息

wasm-objdump add.wasm -x

WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用_第3张图片

你可能感兴趣的:(webdesign)