概要
wasmが、スタックマシンらしいので、やってみた。
参考にしたページ
写真
サンプルコード
let code = `
(module
(func $add (param $lhs i32) (param $rhs i32) (result i32)
local.get $lhs
local.get $rhs
i32.add)
(export "add" (func $add))
)
`
WabtModule().then((wabt) => {
let wasmModule = wabt.parseWat("main.wat", code)
let buffer = wasmModule.toBinary({
log: true,
canonicalize_lebs: true,
relocatable: false,
write_debug_names: false
})
wasmModule.destroy()
console.log(buffer.log)
console.log("bytesize : " + buffer.buffer.byteLength)
WebAssembly.instantiate(buffer.buffer).then(
(results) => {
alert("result: " + results.instance.exports.add(0, 10))
}
)
document.body.insertAdjacentHTML('beforeend', `<p style="color: green; font-weight: bold;">計算結果: <pre>${buffer.log}</pre></p>`);
})
成果物
以上。
