重新解释
reinterpret 指令用于将数字的位重新解释为不同的类型。
试一试
(module
(import "console" "log" (func $log (param i32)))
(func $main
;; the value `10000000_00000000_00000000_00000000` in binary
;; maps to `-0` as a floating point and to `-2147483648` as an integer.
f32.const -0 ;; push an f32 onto the stack
i32.reinterpret_f32 ;; reinterpret the bytes of the f32 as i32
call $log ;; log the result
)
(start $main)
)
const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console });
语法
wat
;; the value `10000000_00000000_00000000_00000000` in binary
;; maps to `-0` as a floating point and to `-2147483648` as an integer
;; push an f32 onto the stack
f32.const -0
;; reinterpret the bytes of the f32 as i32
i32.reinterpret_f32
;; the top item on the stack will now be the value -2147483648 of type i32
| 指令 | 二进制操作码 |
|---|---|
i32.reinterpret_f32 |
0xbc |
i64.reinterpret_f64 |
0xbd |
f32.reinterpret_i32 |
0xbe |
f64.reinterpret_i64 |
0xbf |