typestar

local.tee en WebAssembly

Guarda un valor y sigue usándolo, en una sola instrucción.

(module
  ;; local.tee stores like local.set but leaves the value on the
  ;; stack, so one computation can feed a local and the next step.
  (func (export "square_plus_orig") (param $n i32) (result i32)
    (local $doubled i32)
    (i32.add
      (local.tee $doubled (i32.mul (local.get $n) (i32.const 2)))
      (i32.mul (local.get $doubled) (local.get $doubled)))))

Cómo funciona

  1. local.tee $doubled (...) escribe el local y deja el valor.
  2. La copia que queda alimenta a i32.add mientras el local al cuadrado.
  3. Sin tee esto cuesta un set y un get extra.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
8
Caracteres a escribir
342
Tokens
57
Ritmo de tres estrellas
65 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →