当前位置: 首页 > article >正文

webassembly.instance()调用模块中的函数及webassembly.Module.exports()查看模块中的成员或函数信息

有时候我们需要查看wasm模块中的成员信息及对其调用方法
//wasm

(module
    (func $add32 (param $a i32)(param $b i32)(result i32)
        local.get $a
        local.get $b
        i32.add
        return
    )
    (func $sub32 (param $a i32)(param $b i32)(result i32)
        local.get $a 
        local.get $b
        i32.sub 
        return
    )
    (func $mul32 (param $a i32)(param $b i32)(result i32)
        local.get $a
        local.get $b
        i32.mul 
        return
    )

    (export "add" (func $add32))
    (export "sub" (func $sub32))
    (export "mul" (func $mul32))
)

//html部分

<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
        <title>测试用WebAssembly.Moudle.exports导出模块所有的函数或成员信息</title>
    </head>
    <body>
        <script type="text/javascript">
            fetch("util.wasm")
            .then((response)=>response.arrayBuffer())//返回模块中的二进制文件
            .then((bytes)=>{
                return WebAssembly.compile(bytes);//把 WebAssembly 二进制代码编译为一个 WebAssembly.Module ,不进行实例化
            })
            .then((result)=>{
            	//导出模块中的所有导出成员或方法
                let modules=WebAssembly.Module.exports(result);
                for(const e in modules)
                {
                	//查看模块中的所有被导出的方法信息
                	console.log(modules[e]);
				}
				//实例化模块方法并调用其中的add()方法,当然也可以调用其它的方法
				WebAssembly.instantiate(result)
                .then(instance=>{
                    console.log(instance.exports.add(5,6));
                })
            })
        </script>
    </body>
</html>

http://www.kler.cn/a/378610.html

相关文章:

  • (七)JavaWeb后端开发——Maven
  • 安全性测试
  • QEMU学习之路(4)— Xilinx开源项目systemctlm-cosim-demo安装与使用
  • 软件架构演变:从单体架构到LLM链式调用
  • 对象池模式
  • 抓住亚马逊、shein新品扶持期,利用测评提升搜索排名与销量
  • 「Qt Widget中文示例指南」如何实现窗口嵌入?
  • SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext
  • 用 css 实现空列表自动提示 “空状态”
  • vite构建Vue3项目:封装公共组件,发布npm包,自定义组件库
  • 使用Jupyter Notebook进行数据科学项目
  • CPU用户时间百分比
  • 【flink】之新版本kafka到kafka
  • 五、Go语言快速入门值条件控制
  • strcat,strncat,strstr
  • VScode调试
  • nodejs爬虫系统
  • Excel:vba实现批量插入图片批注
  • AI助力医疗:未来的医生会是机器人吗?
  • 使用opencv调用TV_L1算法提取光流
  • MySQL表的增删改查(CRUD1)
  • rk3568 适配 CAN
  • 浏览器、性能优化、前端安全重难点面试题
  • LeetCode 0685.冗余连接 II:并查集(和I有何不同分析)——详细题解(附图)
  • ReactNative Fabric渲染器和组件(5)
  • 【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用