次は、その反対の考え方をしてみます。WebAssemblyのプログラムに、テキストを渡したい場合です。
次のような流れになります。
これがその初期化の例です。
// 文字列"Ferris"をバイト列に
const utf8enc = new TextEncoder("utf-8");
let text = "Ferris";
let text_bytes = utf8enc.encode(text);
// そのための領域を確保
let len = text_bytes.length;
let start = module.instance.exports.wasm_malloc(len);
// WebAssemblyのメモリに配置
let buffer = module.instance.exports.memory.buffer;
let memory = new Uint8Array(buffer);
memory.set(text_bytes, start);
// プログラムを実行
module.instance.exports.main(start,len);