使用动态索引 wasm (wat) 访问堆栈变量

问题描述 投票:0回答:1

我正在尝试使用动态值访问 wasm 中的索引堆栈变量,但我不知道该怎么做。

(module
  (import "console" "log" (func $log (param i32)))
  (func $main

    ;;array (sorta)
    (local i32);; allocate 0
    (local.set 0 (i32.const 1));; set to value 1

    (local i32);; allocate 1
    (local.set 1 (i32.const 2));; set to value 2

    
    (local.get (local.get 0));;error here
    call $log
  )
  (start $main)
)

这会导致错误

(local.get 0)
只是一个变量名还是我可以发送动态值。

在上面的示例中,我期望打印 2 的值

arrays webassembly
1个回答
0
投票

制作自己的数组的答案是这样的:

(module
  (import "console" "log" (func $log (param i32)))
  (memory $memory 1)

  (func $main
    (i32.store (i32.const 0 ) (i32.const 0))
    (i32.store (i32.const 4 ) (i32.const 5))
    (i32.store (i32.const 8 ) (i32.const 3))
    (i32.store (i32.const 12 ) (i32.const 2))
    (i32.store (i32.const 16 ) (i32.const 1))
    (i32.store (i32.const 20 ) (i32.const 4))

    (i32.load (i32.mul (i32.const 4) 
    (i32.load (i32.mul (i32.const 4) (i32.const 2))) ))
    call $log
  )
  (start $main)
)

这会打印 2。第一次加载得到 3。第二次加载得到 2(索引 3 处的值)

© www.soinside.com 2019 - 2024. All rights reserved.