¿Por qué convertir WASM a WAT?
WAT es la forma de texto legible por humanos de WebAssembly. La gente convierte un .wasm a .wat para leer, auditar o depurar lo que realmente hace un módulo -sus funciones, importaciones y exportaciones- ya que el binario en sí es ilegible.
Cómo convertir WASM a WAT
wasm-tools print OPEN-SOURCE
Desde el conjunto de herramientas de Bytecode Alliance, ejecute wasm-tools print module.wasm -o module.wat para escribir el formato de texto. Omita -o para imprimir en la salida estándar (stdout).
wasm2wat (WABT) OPEN-SOURCE
Usando el WebAssembly Binary Toolkit, ejecute wasm2wat module.wasm -o module.wat. Añada --generate-names para etiquetas de función legibles y -f para plegar expresiones.
Acerca de estos formatos
Un archivo .wasm contiene un módulo de WebAssembly compilado: un código de bytes (bytecode) binario portátil producido a partir de lenguajes como C, C++ o Rust que se ejecuta a una…
Abrir detalles de .WASM →Un archivo .WAT está asociado con IBM Voice Type Languages Map, un archivo de tipo misc.
Abrir detalles de .WAT →Calidad y qué observar
- La conversión es fiel pero no es el código fuente original: verá instrucciones WASM de bajo nivel, no el C/C++/Rust desde el que se compiló.
- Las funciones sin nombre aparecen como índices numéricos a menos que pase un flag de generación de nombres, lo que dificulta el seguimiento de módulos grandes.
- Editar el WAT y volver a ensamblarlo con wat2wasm es posible, pero es fácil cometer errores en cualquier cosa que no sea trivial.
Preguntas frecuentes
¿Es wasm-to-wat sin pérdidas?
¿wasm-tools o wabt? ¿Cuál debería usar?
¿Puedo convertir el WAT de nuevo a .wasm?
wat2wasm module.wat -o module.wasm (WABT) lo vuelve a ensamblar en el binario.¿Cómo obtengo nombres de funciones legibles?
--generate-names a wasm2wat, o mantenga la sección de nombres en la compilación original.