br_if

Die br_if-Anweisung verzweigt zu einer loop-, einer block- oder einer if-Anweisung, basierend auf einer booleschen Bedingung (0 oder 1).

Probieren Sie es aus

(module
  ;; Import the browser console object, which you'll need to pass in from JavaScript
  (import "console" "log" (func $log (param i32)))

  ;; Create a global variable and initialize it to 0
  (global $i (mut i32) (i32.const 0))

  (func
    (loop $my_loop

      ;; Add 1 to $i
      global.get $i
      i32.const 1
      i32.add
      global.set $i

      ;; Log the current value of $i
      global.get $i
      call $log

      ;; If $i is less than 10, branch to loop
      global.get $i
      i32.const 10
      i32.lt_s
      br_if $my_loop

    )
  )

  (start 1) ;; Run the first function automatically
)
const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console });

Syntax

wat
;; Label the loop to enable branching to it later
(loop $my_loop

  ;; Add 1 (true) to the stack
  i32.const 1

  ;; Branch to the loop if the top of the stack is 1
  br_if $my_loop

)
Anweisung Binärer Opcode
br_if 0x0d