Um tour por WebAssembly Índice

Lendo Texto

Vamos explorar a ideia oposta. Imagine que queremos passar um texto para um programa WebAssembly.

Nós devemos:

  1. Determinar o comprimento em bytes do texto que queremos passar.
  2. Alocar algum espaço em nossa memória com esse comprimento em bytes.
  3. Copiar os bytes para a memória do nosso programa no início do espaço que alocamos.
  4. Informar o programa WebAssembly que colocamos alguns dados na memória em uma posição e com um comprimento específicos em bytes.

Aqui está um exemplo de como é essa inicialização:

JavaScript // Transforma "Ferris" em bytes const utf8enc = new TextEncoder("utf-8"); let text = "Ferris"; let text_bytes = utf8enc.encode(text); // Aloca espaço suficiente para o texto let len = text_bytes.length; let start = module.instance.exports.wasm_malloc(len); // Coloca o texto na memória do programa WebAssembly let buffer = module.instance.exports.memory.buffer; let memory = new Uint8Array(buffer); memory.set(text_bytes, start); // Executa o programa module.instance.exports.main(start,len);