typestar

drop y select en WebAssembly

Tira un valor, o elige entre dos sin ramificar.

(module
  ;; drop throws the top of the stack away; select picks between two
  ;; values by a condition without any branching.
  (func $noisy (result i32)
    i32.const 99)

  (func (export "ignore_result") (result i32)
    (drop (call $noisy))
    (i32.const 7))

  (func (export "larger") (param $a i32) (param $b i32) (result i32)
    (select
      (local.get $a)
      (local.get $b)
      (i32.gt_s (local.get $a) (local.get $b)))))

Cómo funciona

  1. drop descarta el resultado no deseado de la función llamada.
  2. select toma dos valores y una condición y se queda con uno.
  3. Ninguno ramifica: select evalúa ambos lados y luego elige.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
393
Tokens
84
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 78 segundos.

Escribe este fragmento

Paso 3 de 3 en Locales y la pila; paso 9 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →