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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值