MALOUDA-PSA 2024-04-18 21:43 采纳率: 90.9%
浏览 0
已结题

webassembly的问题


;;test.wat
(module
    (func (export "add") (param $i1 i32) (param $i2 i32) (result i32)
        get_local $i1 
        get_local $i2 
        i32.add)
    (func (export "inc") (param $i1 i32) (result i32)
        get_local $i1 
        i32.const 1
        i32.add)
)

现在我想把add函数修改为三个数字相加,前两个是2个参数,后面加1,代码写成这样:

;;test.wat
(module
    (func (export "add") (param $i1 i32) (param $i2 i32) (result i32)
        get_local $i1 
        get_local $i2 
        i32.add
        get_local result
        i32.const 1
        i32.add)
    (func (export "inc") (param $i1 i32) (result i32)
        get_local $i1 
        i32.const 1
        i32.add)
)


wat2wasm 编译报错:
test.wat:7:13: error: unexpected token "result", expected a numeric index or a name (e.g. 12 or $foo).
        get_local result
  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-18 21:43
    关注

    引自免费微信小程序:皆我百晓生

    在WebAssembly模块(.wat 文件)中,get_local 指令用于获取局部变量。但是,你在代码中尝试通过名称 result 来获取局部变量,这不符合 WebAssembly 的语法。局部变量通常通过它们的索引来访问,而不是通过名称。

    为了修复这个错误,你需要提供一个正确的局部变量索引给 get_local 指令。然而,在 WebAssembly 中,结果通常是通过返回值来传递的,而不是作为局部变量存储的。因此,你应该将计算结果直接添加到之前得到的和上,而不是试图从某个位置获取它。以下是修正后的 .wat 文件:

    (module
        (func (export "add") (param $i1 i32) (param $i2 i32) (result i32)
            get_local $i1 
            get_local $i2 
            i32.add
            i32.const 1
            i32.add)
        (func (export "inc") (param $i1 i32) (result i32)
            get_local $i1 
            i32.const 1
            i32.add)
    )
    

    在这个修正后的版本中,add 函数首先对 $i1$i2 进行求和,然后将结果与常量 1 相加,最终的结果会自动返回。注意这里并没有额外的 get_local 操作,因为不需要从任何地方获取结果,而是直接进行计算并返回。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 创建了问题 4月18日

悬赏问题

  • ¥15 python点云生成mesh精度不够怎么办
  • ¥15 QT C++ 鼠标键盘通信
  • ¥15 改进Yolov8时添加的注意力模块在task.py里检测不到
  • ¥50 高维数据处理方法求指导
  • ¥100 数字取证课程 关于FAT文件系统的操作
  • ¥15 如何使用js实现打印时每页设置统一的标题
  • ¥15 安装TIA PortalV15.1报错
  • ¥15 能把水桶搬到饮水机的机械设计
  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器