凌云的博客

行胜于言

wat、wasm、cwasm 分别是什么

分类:wasm| 发布时间:2024-12-28 08:56:00

wat(WebAssembly Text Format)

本文通过 GPT 辅助生成

  • 定义:wat(WebAssembly Text Format)是一种文本格式,用于表示 WebAssembly 模块的内容。 它是 WebAssembly 模块的 可读文本 表示形式。 wat 格式使用类似于 Lisp 的语法,用圆括号包围指令和操作数,提供了一种易于阅读和理解的方式来描述 WebAssembly 程序。
  • 用途:wat 文件通常用于开发和调试。由于它是文本格式,开发者可以直接编辑和查看 WebAssembly 模块的结构,然后通过工具将其转换为 WebAssembly 的二进制格式(wasm 文件)。 wat 文件通常用于教育、文档和测试,便于理解 WebAssembly 程序如何运作。

示例(简单的加法函数):

(module
  (func (export "add") (param i32 i32) (result i32)
    local.get 0
    local.get 1
    i32.add)
)

这段代码定义了一个 WebAssembly 模块,其中包含一个 add 函数,它接受两个 i32 参数并返回它们的和。

wasm(WebAssembly Binary Format)

  • 定义:wasm(WebAssembly Binary Format)是 WebAssembly 模块的 二进制格式。 它是 WebAssembly 的实际执行格式,浏览器和其他 WebAssembly 运行时环境通过解析并执行 wasm 文件。 wasm 是 WebAssembly 模块的 高效二进制表示,旨在提供快速加载和执行性能。
  • 用途:wasm 文件是 WebAssembly 程序的最终格式,它包含了函数、数据、内存、全局变量等信息,并且是经过优化以便于浏览器和其他运行时快速加载和执行的。 wasm 文件通常是通过将 wat 文件转换成二进制格式生成的。

wat 和 wasm 之间如何转换

  • wat 到 wasm:wat 是 WebAssembly 的文本表示,而 wasm 是它的二进制表示。 你可以使用工具将 wat 文件转换为 wasm 文件,例如使用 wat2wasm 工具。 wat 文件便于人类理解和修改,而 wasm 文件更适合计算机快速加载和执行。
  • wasm 到 wat:你也可以将 wasm 文件反向转换为 wat 格式,这样可以方便地查看和修改 WebAssembly 模块的结构。 使用工具如 wasm2wat 就可以将二进制的 wasm 文件转换为 wat 文件。

什么是 cwasm

在 wasmtime 中,可以通过 wasmtime compile 命令将 wasm 文件编译成 cwasm。

表示将 wasm 模块编译成特定平台的机器码,有助于提高性能

总结

  • wat:WebAssembly 的文本格式,用于人类可读的表示 WebAssembly 模块的结构。它使用类似 Lisp 的语法,并可以通过工具转换为二进制格式(wasm)。
  • wasm:WebAssembly 的二进制格式,是 WebAssembly 模块的实际执行格式,浏览器和运行时使用它来执行 WebAssembly 代码。
  • cwasm:wasmtime 将 wasm 模块编译成特定平台机器码后的文件后缀,有助于进一步提高性能

wat 和 wasm 可以简单类比为汇编语言和机器语言

  • wat -> 汇编语言
  • wasm -> 机器语言