typestar

Estilo de pila y estilo plegado en WebAssembly

La misma función dos veces: empujes crudos, luego s-expresiones anidadas.

(module
  ;; Plain form: instructions push and pop an implicit stack.
  (func (export "average_stack") (param $a i32) (param $b i32) (result i32)
    local.get $a
    local.get $b
    i32.add
    i32.const 2
    i32.div_s)

  ;; Folded form: the same instructions, nested as s-expressions.
  (func (export "average_folded") (param $a i32) (param $b i32) (result i32)
    (i32.div_s
      (i32.add (local.get $a) (local.get $b))
      (i32.const 2))))

Cómo funciona

  1. La forma plana lista instrucciones; cada local.get empuja, i32.add saca dos.
  2. La forma plegada anida los operandos dentro de su operador, como Lisp.
  3. Ambas deletrean el mismo bytecode — plegar es solo para quien lee.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
406
Tokens
77
Ritmo de tres estrellas
65 tpm

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

Escribe este fragmento

Paso 3 de 3 en Módulos; paso 3 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →