Varför konvertera WASM till WAT?
WAT är den mänskligt läsbara textformen av WebAssembly. Man konverterar en .wasm till .wat för att läsa, granska eller felsöka vad en modul faktiskt gör - dess funktioner, importer och exporter - eftersom själva binärfilen är oläslig.
Hur man konverterar WASM till WAT
wasm-tools print OPEN-SOURCE
Från Bytecode Alliance-verktygslådan, kör wasm-tools print module.wasm -o module.wat för att skriva textformatet. Uteslut -o för att skriva till stdout.
wasm2wat (WABT) OPEN-SOURCE
Använd WebAssembly Binary Toolkit och kör wasm2wat module.wasm -o module.wat. Lägg till --generate-names för läsbara funktionsetiketter och -f för att vika uttryck (fold expressions).
Om dessa format
En .wasm-fil innehåller en kompilerad WebAssembly-modul: portabel binär bytecode skapad från språk som C, C++ eller Rust som körs i nästan infödd hastighet. De flesta .wasm-filer laddas av…
Öppna detaljer för .WASM →En .WAT-fil är associerad med IBM Voice Type Languages Map, en misc-fil.
Öppna detaljer för .WAT →Kvalitet & vad man bör tänka på
- Konverteringen är trogen men inte originalkällkoden: du ser WASM-instruktioner på låg nivå, inte den C/C++/Rust som den kompilerades från.
- Namnlösa funktioner visas som numeriska index om du inte skickar med en flagga för att generera namn, vilket gör stora moduler svåra att följa.
- Att redigera WAT och återmontera med wat2wasm är möjligt men lätt att göra fel på för allt som inte är trivialt.
Vanliga frågor
Är wasm-to-wat förlustfri?
wasm-tools eller wabt - vilken ska jag använda?
Kan jag konvertera WAT tillbaka till .wasm?
wat2wasm module.wat -o module.wasm (WABT) återmonterar den till binärformat.Hur får jag läsbara funktionsnamn?
--generate-names till wasm2wat, eller behåll namn-sektionen (name section) i originalbygget.