On this page

Web Assembly WAT Reference

You will find all the instructions used in the WAT programming language.

Variables

Instruction Description
(local...) Create a local variable.
local.get Push a local variable onto the stack.
local.set Pop a value off the stack and set a local variable.
local.tee Pop a value off the stack and set a local variable, but keeps the value on the stack.
(global...) Create a global variable.
global.get Push a global variable onto the stack.
global.set Pop a value off the stack and set a global variable.

Basics

Instruction Description
(module...) Create the WASM module.
(func...) Create a function.
call Call a function.
(param...) Declare a parameter to a code block.
(result...) Declare a result to be returned for a code block.
return Return out of a function.
(if...) Create an if...then...else block.
(loop...) Create a looping code block.
(block...) Create a code block you can exit.
br Branch to the top of a loop or the bottom or a block.
br_if Branch if a condition was met.
br_table Branch a list of code blocks.

Tables

Instruction Description
(table...) Create the a table of function references.
table.get Get a reference to a function from a table.
table.set Set a reference to a function into a table.
table.size Gets number of elements in a table.
table.grow Increase the number of elements a table contains.
table.fill Fill a table with the a set value.
table.copy Copy functions references from one table to another.
table.init Copy functions references from data into a table.
(type...) Declares what parameters and result data types a function uses.
call_indirect Declare a table's function references.
(element...) Declare a collection of function references.
elem.drop Remove a passive element data block from memory.
ref.null Push a NULL reference for a function onto the stack.
ref.is_null Check to see if a reference to a function is NULL or not.
ref.func Push a reference to a function onto the stack.

Memory

Instruction Description
(memory...) Create the a memory area.
memory.size Gets size (number of pages) the memory currently has.
memory.grow Increase the size of the memory (in pages).
memory.fill Fill an area of memory with a set value.
memory.copy Copy one area of memory to another.
memory.init Copy passive data into memory.
(data...) Declare a block of constant data that can be copied into memory.
data.drop Remove a passive data block from memory.

Miscellaneous

Instruction Description
(start...) Set which function to call when the WASM module starts up.
nop Do nothing.
unreachable Declare an area in code that should be unreachable and throw an exception if reached.
drop Pop a value off the stack and do nothing with it.
select Select between two items depending on a condition.

JavaScript

Instruction Description
(import...) Import information from JavaScript into WASM.
(export...) Export information to JavaScript from within WASM.
(tag...) Information about exceptions that can be thrown.
throw Throw an exception to be catched within JavaScript.
WebAssembly.Global JavaScript global object.
WebAssembly.Memory JavaScript memory object.
WebAssembly.Tag JavaScript tag object.