Tour de WebAssembly Table des Matières

Envoi de Texte vers un Programme WebAssembly

Explorons l'idée opposée. Imagine que nous voulons envoyer du texte vers notre programme WebAssembly.

Nous devons:

  1. Déterminer la longueur en octets du texte que nous souhaitons transmettre.
  2. Allouer suffisamment d'espace dans notre mémoire pour ces octets.
  3. Copier les octets dans la mémoire de notre programme à la position que nous venons d'allouer.
  4. Informer au programme WebAssembly que nous avons mis ces octets dans sa mémoire en lui indiquant l'index et la taille.

Voici un exemple de ce à quoi ressemble cette initialisation:

// Transforme "Ferris" en octets.
const utf8enc = new TextEncoder("utf-8");
let text = "Ferris";
let text_bytes = utf8enc.encode(text);

// Alloue de l'espace mémoire pour le texte.
let len = text_bytes.length;
let start = module.instance.exports.wasm_malloc(len);

// Met le texte dans la mémoire du programme WebAssembly.
let buffer = module.instance.exports.memory.buffer;
let memory = new Uint8Array(buffer);
memory.set(text_bytes, start);

// Exécute le programme.
module.instance.exports.main(start,len);