选择
select
指令根据其第三个操作数是否为零来选择其前两个操作数之一。它与其他语言中的三元运算符有一些相似之处(例如 false ? 10 : 20
),但不会短路。该指令后面可以跟随一个立即值类型:select (result T)
。select (result T)
使用不同的二进制操作码,并允许除 WebAssembly MVP(i32
、i64
、f32
、f64
)中引入的类型之外的类型,例如,它允许在两个 externref
值之间进行选择。
试用
语法
wasm
;; push two values onto the stack
i32.const 10
i32.const 20
;; change to `1` (true) to get the first value (`10`)
i32.const 0
select
f32.const nan f32.const -54.1 ;; change to `1` (true) to get the first value (`nan`) i32.const 0 select (result f32)
指令 | 二进制操作码 |
---|---|
select |
0x1b |
select t |
0x1c |