br_if 如何工作。我已阅读文档,但没有找到任何关于 br_if 的结果值的信息。我使用WebAssembly Studio。我有这段代码,但我不明白它为什么会这样。
(func $f (param $a i32) (result i32)
(block (result i32)
(br_if 0 (i32.const 5) (get_local $a))
))
我认为 br_if 仅在条件不为 0 时才执行,但此函数始终返回 5,即使参数 a 为 0。我认为 br_if 可选返回值并在块后尝试设置值,但它没有编译。请解释一下它是如何工作的。
(func $f (param $a i32) (result i32)
(block (result i32)
(br_if 0 (i32.const 5) (get_local $a))
)
(i32.const 10))
另外我想问一下从块或循环中返回值的问题,因为在文档中我没有看到任何关于它的句子。当函数在所有分支中返回值时,我可以从循环或块中选择返回值吗?