Warum WASM in WAT konvertieren?
WAT ist die menschenlesbare Textform von WebAssembly. Man konvertiert eine .wasm nach .wat, um zu lesen, zu prüfen oder zu debuggen, was ein Modul tatsächlich tut - seine Funktionen, Importe und Exporte -, da die Binärdatei selbst unlesbar ist.
Wie man WASM in WAT konvertiert
wasm-tools print OPEN-SOURCE
Führen Sie aus dem Bytecode Alliance Toolkit wasm-tools print module.wasm -o module.wat aus, um das Textformat zu schreiben. Lassen Sie -o weg, um auf stdout auszugeben.
wasm2wat (WABT) OPEN-SOURCE
Verwenden Sie das WebAssembly Binary Toolkit und führen Sie wasm2wat module.wasm -o module.wat aus. Fügen Sie --generate-names für lesbare Funktionsbezeichnungen und -f zum Falten von Ausdrücken hinzu.
Über diese Formate
Eine .wasm-Datei enthält ein kompiliertem WebAssembly-Modul: portabler binärer Bytecode, der aus Sprachen wie C, C++ oder Rust erzeugt wurde und mit nahezu nativer Geschwindigkeit…
.WASM-Details öffnen →Eine .WAT-Datei ist mit IBM Voice Type Languages Map verknüpft, einer misc-Datei.
.WAT-Details öffnen →Qualität & worauf zu achten ist
- Die Konvertierung ist originalgetreu, aber nicht der ursprüngliche Quellcode: Sie sehen Low-Level-WASM-Instruktionen, nicht das C/C++/Rust, aus dem es kompiliert wurde.
- Benannte Funktionen erscheinen als numerische Indizes, es sei denn, Sie übergeben ein Flag zur Namensgenerierung, was große Module schwer nachvollziehbar macht.
- Das Bearbeiten des WAT und das erneute Assemblieren mit wat2wasm ist möglich, aber bei allem, was über triviale Dinge hinausgeht, fehleranfällig.
Häufig gestellte Fragen
Ist wasm-to-wat verlustfrei?
wasm-tools oder wabt - was soll ich verwenden?
Kann ich das WAT zurück in .wasm konvertieren?
wat2wasm module.wat -o module.wasm (WABT) assembliert es wieder in die Binärdatei.Wie erhalte ich lesbare Funktionsnamen?
--generate-names an wasm2wat oder behalten Sie die „Name Section“ im ursprünglichen Build bei.