Loads a value from memory and places it on the stack 1.
For integer types, there are additional opcodes to allow loading values smaller than result data type (e.g. placing an i32
on the stack, but only populating it with 8 bits from memory) 2; These also come in two forms each, to indicate whether the value read from memory should be interpretted as signed (and therefore be sign-extended) or unsigned 2.
$$ T.\mathsf{load}N_s^? \enspace \mathsf{offset}\mathsf{i32} \enspace \mathsf{align}\mathsf{i32} \enspace (ptr: \mathsf{i32}) \to T $$
Opcode | Instruction | Immediates | Stack Arity |
---|---|---|---|
0x28 |
i32.load |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x29 |
i64.load |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x2A |
f32.load |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x2B |
f64.load |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x2C |
i32.load8_s |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x2D |
i32.load8_u |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x2E |
i32.load16_s |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x2F |
i32.load16_u |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x30 |
i64.load8_s |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x31 |
i64.load8_u |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x32 |
i64.load16_s |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x33 |
i64.load16_u |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x34 |
i64.load32_s |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ | |
0x35 |
i64.load32_u |
$\mathsf{offset}\mathsf{i32}, \enspace \mathsf{align}\mathsf{i32}$ |
;; Address to load from
i32.const 0
;; Load the value
i32.load offset=0 align=0
Footnotes
-
Execution, Memory Instructions, load - https://www.w3.org/TR/wasm-core-2/exec/instructions.html#exec-load ↩
-
Structure, Memory Instructions - https://www.w3.org/TR/wasm-core-2/syntax/instructions.html#memory-instructions ↩ ↩2