【发布时间】:2018-10-05 09:23:01
【问题描述】:
WebAssembly 中的大多数演示仍然使用 C/C++ 并没有显示太多 wat。到目前为止的几个例子显示了这样的事情:
;; Convert this to add.wasm by running:
;;
;; wat2wasm add.wat -o add.wasm
;;
(module
(func (export "add") (param i32 i32) (result i32)
get_local 0
get_local 1
i32.add))
使用 local 变量并调用本机函数。我知道还有get_global 之类的。
我想知道的是如何使用load and store 来管理全局(?)内存。我无法理解如何使用这些功能。
例如,您将如何将 JavaScript 中的字符串数组加载到 WebAssembly 中,然后将它们打印出来。像这样的:
const fs = require('fs')
const buf = fs.readFileSync('./add.wasm')
WebAssembly.instantiate(new Uint8Array(buf)).then(function(results){
var lib = results.instance.exports
lib.storeArray(['hello', 'world'])
lib.logArray()
// hello
// world
})
按照以下方式组装:
(module
(func (export "storeArray") (param ?) (result ?)
iterate and i32.store somehow)
(func (export "logArray") (param ?) (result ?)
i32.load ? iterate through something
console.log(item)))
特别想知道如何引用内存地址(加载/存储值)并使用该功能。
【问题讨论】: