typestar

block y br_if en WebAssembly

Las etiquetas son salidas: br sobre un block salta más allá de su fin.

(module
  ;; br jumps to a label; on a block that means "exit here". br_if
  ;; makes the jump conditional -- this is the early return of WAT.
  (func (export "first_fault") (param $a i32) (param $b i32) (result i32)
    (block $out (result i32)
      (i32.const 1)
      (br_if $out (i32.eqz (local.get $a)))
      drop
      (i32.const 2)
      (br_if $out (i32.eqz (local.get $b)))
      drop
      (i32.const 0))))

Cómo funciona

  1. (block $out (result i32) ...) abre una región etiquetada.
  2. br_if $out sale temprano, llevando el valor que ya está en la pila.
  3. El patrón encadena: empuja un candidato, prueba, sigue de largo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
12
Caracteres a escribir
366
Tokens
72
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 72 segundos.

Escribe este fragmento

Paso 2 de 3 en Control de flujo; paso 11 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →