Generé manualmente un módulo WASM que wasm2wat descompila en el siguiente código.
(module (type (;0;) (func)) (type (;1;) (func (param i32 i32))) (import "std" "print" (func (;0;) (type 1))) (func (;1;) (type 0) i32.const 0 i32.const 13 call 0) (memory (;0;) 13) (export "main" (func 0)) (export "data" (memory 0)) (data (;0;) (i32.const 0) "Hello, world!"))En el sitio de Node, instalo el módulo y proporciono las siguientes importaciones.
const imports = { std: { print: (utf8Offset, utf8Length) => { console.log([utf8Offset, utf8Length]); ... }, }, }; Cuando se ejecuta la función main , console.log informa dos ceros en lugar de 0 y 13 . ¿Por qué?
El problema fue resuelto. No tomé en cuenta que las funciones están numeradas a partir de las importaciones, no de las definiciones en el módulo.
La exportación main debería verse así:
(export "main" (func 1))