我正在尝试使用动态值访问 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 的值
制作自己的数组的答案是这样的:
(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 处的值)