.wat → .wasm
WebAssembly
в текстовом виде
WAT — читаемая запись WebAssembly. Несколько примеров, чтобы разобраться в скобках, функциях и стеке.
Все начинается с модуля
Внутри module описываются функции, память, импорты и экспорты. Даже пустой модуль корректен.
;; самый короткий пример
(module)
Два числа, одна сумма
Параметры получают имена и типы. Экспорт делает функцию доступной снаружи модуля.
(module
(func (export "sum")
(param $x i32) (param $y i32)
(result i32)
local.get $x
local.get $y
i32.add))
Инструкции идут по порядку
const кладет значение на стек. add забирает два значения и кладет обратно их сумму.
i32.const 12 ;; [12]
i32.const 8 ;; [12, 8]
i32.add ;; [20]
Из текста в байты и обратно
Утилиты из набора WABT преобразуют текстовый формат в бинарный и проверяют готовый модуль.
wat2wasm sum.wat -o sum.wasm
wasm-validate sum.wasm
wasm2wat sum.wasm
i32 / i64 — целые
f32 / f64 — с плавающей точкой