评论

wasm表格使用

wasm表格使用

wasm表格使用源码

wasm源码

定义表格,包含2个函数,元素从0开始,定义函数类型,然后导出调用表格的函数,通过表格索引去调用具体函数。函数1返回42,函数2返回13。

(module
  (table 2 funcref)
  (func $f1 (result i32)
    i32.const 42)
  (func $f2 (result i32)
    i32.const 13)
  (elem (i32.const 0) $f1 $f2)
  (type $return_i32 (func (result i32)))
  (func (export "callByIndex") (param $i i32) (result i32)
    local.get $i
    call_indirect  (type $return_i32)
    )
)

小程序调用

定义全局变量
let inst;

定义加载wasm函数,并在onload中调用

  loadWasm() {
    var importObj = {

    };
    WXWebAssembly.instantiate("/wasm/wasm-table.wasm", importObj).then(
      (result) => {
        console.log("初始化成功");
        inst = result.instance.exports;
      },
      (err) => {
        console.log("初始化失败", err);
      }
    );
  },

调用wasm的函数,这里写了两个按钮,分别调用不同函数。

  callWasm2() {
      let i = inst.callByIndex(1);
    console.log(i); // 返回 13
    wx.showToast({
      title: ''+i,
    })
  },
  
  callWasm1() {
      let i = inst.callByIndex(0);
    console.log(i); // 返回 42
    wx.showToast({
      title: ''+i,
    })
  },

这样就可以了,可以在小程序五位字节码查看效果,有任何问题,欢迎提问讨论。

最后一次编辑于  2022-09-04  
点赞 0
收藏
评论
登录 后发表内容