Turul WebAssembly Cuprins

Citirea textului

Să explorăm conceptul opus. Imaginați-vă că dorim să dăm niște text unui program WebAssembly.

Este necesar:

  1. Să determinăm lungimea în octeți a textului pe care vrem să îl furnizăm.
  2. Să alocăm suficientă memorie pentru a stoca textul nostru.
  3. Să copiem octeții în memoria programului nostru la începutul spațiului alocat.
  4. Să anunțăm programul nostru că am pus textul în memoria sa la un anumit indice de început și lungime specificată în octeți.

Iată un exemplu de cum ar arăta acea inițializare:

// Transformă "Ferris" în octeți
const utf8enc = new TextEncoder("utf-8");
let text = "Ferris";
let text_bytes = utf8enc.encode(text);

// Alocă suficient spațiu pentru text
let len = text_bytes.length;
let start = module.instance.exports.wasm_malloc(len);

// Pune textul în memoria programului WebAssembly
let buffer = module.instance.exports.memory.buffer;
let memory = new Uint8Array(buffer);
memory.set(text_bytes, start);

// Rulează programul
module.instance.exports.main(start,len);