如何理解 WebAssembly 函数体中的 "smallest index"?
How to understand the "smallest index" in a WebAssembly function body?
如何理解我用红色矩形区分的句子?
通过相同的 index space 访问局部变量和函数参数。索引 space 是一个抽象实体 - 实现者可以自由放置他们认为合适的参数和局部变量,但参数和局部变量应该通过相同的索引访问。
接受参数 $px 和 $py 的此 add2
函数将访问索引 0 处的 $px 和索引 1 处的 $py:
(func $add2 (param $px i32) (param $py i32)
get_local 0
get_local 1
i32.add)
这个只包含一个参数的 add_local
函数将在索引 0 处有 $px,在索引 1 处有局部 $z。
(func $add_local (param $px i32) (local $z i32)
get_local 0
get_local 1
i32.add)
所以函数的索引 space 由
组成
- [0] = 参数 0
- [1] = 参数 1
- ...
- [N] = 参数 N
- [N+1] = local0
- [N+2] = local1
- ...
- [N+M] = 本地 M
如何理解我用红色矩形区分的句子?
通过相同的 index space 访问局部变量和函数参数。索引 space 是一个抽象实体 - 实现者可以自由放置他们认为合适的参数和局部变量,但参数和局部变量应该通过相同的索引访问。
接受参数 $px 和 $py 的此 add2
函数将访问索引 0 处的 $px 和索引 1 处的 $py:
(func $add2 (param $px i32) (param $py i32)
get_local 0
get_local 1
i32.add)
这个只包含一个参数的 add_local
函数将在索引 0 处有 $px,在索引 1 处有局部 $z。
(func $add_local (param $px i32) (local $z i32)
get_local 0
get_local 1
i32.add)
所以函数的索引 space 由
组成- [0] = 参数 0
- [1] = 参数 1
- ...
- [N] = 参数 N
- [N+1] = local0
- [N+2] = local1
- ...
- [N+M] = 本地 M