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
local.tee $doubled (...)escribe el local y deja el valor.- La copia que queda alimenta a
i32.addmientras el local al cuadrado. - Sin tee esto cuesta un set y un get extra.
Palabras clave y builtins usados aquí
exportfunci32localmoduleparamresult
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.
Paso 2 de 3 en Locales y la pila; paso 8 de 28 en Fundamentos del lenguaje.