Memoria lineal en WebAssembly
Una corrida plana de bytes, direccionada con aritmética propia.
(module
;; Linear memory is a flat run of bytes; store and load move i32s
;; at byte addresses the code computes itself.
(memory (export "mem") 1)
(func (export "stash") (param $slot i32) (param $value i32)
(i32.store
(i32.mul (local.get $slot) (i32.const 4))
(local.get $value)))
(func (export "fetch") (param $slot i32) (result i32)
(i32.load (i32.mul (local.get $slot) (i32.const 4)))))
Cómo funciona
(memory (export "mem") 1)declara una página de 64 KiB.i32.storetoma dirección y valor; los lugares van cada 4 bytes.i32.loadlee de vuelta la misma cuenta de direcciones.
Palabras clave y builtins usados aquí
exportfunci32memorymoduleparamresult
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 391
- Tokens
- 84
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 78 segundos.
Paso 1 de 4 en Memoria; paso 16 de 28 en Fundamentos del lenguaje.