Memoria en bloque en WebAssembly
Copia o rellena corridas enteras de bytes en una instrucción.
(module
;; memory.fill and memory.copy move whole runs of bytes in one
;; instruction: destination, source or value, then length.
(memory (export "mem") 1)
(data (i32.const 0) "waypoint")
(func (export "duplicate") (param $to i32)
(memory.copy (local.get $to) (i32.const 0) (i32.const 8)))
(func (export "blank") (param $at i32) (param $len i32)
(memory.fill (local.get $at) (i32.const 32) (local.get $len)))
(func (export "read") (param $i i32) (result i32)
(i32.load8_u (local.get $i))))
Cómo funciona
memory.copymueve length bytes de origen a destino.memory.fillescribe un byte a lo largo de una corrida — 32 es espacio.i32.load8_uverifica qué aterrizó dónde.
Palabras clave y builtins usados aquí
dataexportfunci32memorymoduleparamresult
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 492
- Tokens
- 133
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 123 segundos.
Paso 4 de 4 en Memoria; paso 19 de 28 en Fundamentos del lenguaje.