store: Wasm 文字指令

store 記憶體指令用於將堆疊中的數字儲存到記憶體中。

有用於將 i32i64f32f64 儲存到記憶體中的 store 指令。對於整數,有單獨的指令變體,用於將寬型別數字儲存到記憶體中的窄型別數字。例如,您可以使用 i32.store8 將 32 位數字儲存到記憶體中的 8 位槽中。如果數字不適合較窄的數字型別,則會發生環繞。所有變體均在下方列出

試一試

(module

  (memory $memory 1)
  (export "memory" (memory $memory))

  (func (export "store_in_mem") (param $num i32)
    i32.const 0
    local.get $num

    ;; store $num at position 0
    i32.store
  )

)
const url = "{%wasm-url%}";
const result = await WebAssembly.instantiateStreaming(fetch(url));

const store_in_mem = result.instance.exports.store_in_mem;
const memory = result.instance.exports.memory;

store_in_mem(100);

const dataView = new DataView(memory.buffer);
const first_number_in_mem = dataView.getUint32(0, true);

console.log(first_number_in_mem);
// Expected output: 100

語法

儲存到預設記憶體

wat
;; Store value in default memory at particular offset
i32.const 0 ;; stack variable with offset in memory to store the number
i32.const 20 ;; stack variable with the number to store
i32.store ;; store in default memory

;; Store using S-function (same values and offset)
(i32.store (i32.const 0) (i32.const 20))

儲存到指定記憶體(如果支援多記憶體)

wat
;; Store in memory referenced by its index
i32.const 0 ;; offset in memory to store the number
i32.const 20 ;; the number to store
i32.store (memory 2)  ;; store in memory with index 2

;; Store in memory referenced by its name
i32.const 0 ;; offset to store the number
i32.const 20 ;; the number to store
i32.store (memory $memoryName)  ;; store in memory with name "$memoryName"

;; Store in same memory using an S function
(i32.store (memory $memoryName) (i32.const 0) (i32.const 20))

指令和操作碼

指令 二進位制操作碼
i32.store 0x36
i64.store 0x37
f32.store 0x38
f64.store 0x39
i32.store8 0x3a
i32.store16 0x3b
i64.store8 0x3c
i64.store16 0x3d
i64.store32 0x3e

規範

規範
未知規範
# syntax-instr-memory

瀏覽器相容性

webassembly.api.Memory

webassembly.multiMemory

注意: multiMemory 相容性表顯示了 store 可用於指定記憶體的版本。