WASM till WAT – WebAssembly-disassembler
Konvertera en .wasm-binär till läsbar WAT-text, validera den och lista sektioner, importer, exporter och funktioner i webbläsaren utan att köra modulen.
Modulen läses bara och konverteras till text: den kompileras, instansieras eller körs aldrig.
- Storlek
- –
- Funktioner
- –
- Importer
- –
- Exporter
- –
- Typer
- –
- Minnen
- –
- Tabeller
- –
- Globala variabler
- –
Sektioner
| Sektion | Offset | Storlek | Poster |
|---|
Importer
| Modul | Namn | Typ | Detaljer |
|---|
Exporter
| Namn | Typ | Index |
|---|
Så konverterar du WASM till WAT
- Släpp en
.wasm-fil i släppytan, eller klicka på den för att välja en (upp till 20 MB). Du kan också klicka på Ladda en exempelmodul för att se en liten demo. - Verktyget kontrollerar binären, validerar den och visar resultatet: ✓ Modulen är giltig., eller orsaken till att den inte är det.
- Läs räknarna: Funktioner (importerade och definierade), Importer, Exporter, Typer, Minnen, Tabeller och Globala variabler.
- Läs disassemblerad kod i WebAssemblys textformat (WAT) och använd sedan Kopiera eller Ladda ner .wat.
- Justera utdata med alternativen Använd namn från name-sektionen, Nästlade uttryck (S-uttryck) och Exporter inline.
- Öppna tabellerna Sektioner, Importer och Exporter för att se filens upplägg: varje sektion med byteoffset, storlek och antal poster.
Modulen kompileras, instansieras eller körs aldrig. Verktyget läser bara dess byte och gör om dem till text, så det är säkert att granska en fil du inte litar på.
Det här visar WAT-utdata
WebAssembly har två likvärdiga format: den kompakta binären .wasm som webbläsare och körmiljöer läser in, och textformatet .wat, som är avsett för människor. Disassemblern skriver ut varje del av modulen i textform: funktionstyper, importer, funktionskroppar, tabeller, minnen, globala variabler, exporter, startfunktionen, elementsegment och datasegment.
Som standard listas instruktionerna en per rad i stackordning, så som de lagras:
(func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add)
Med Nästlade uttryck (S-uttryck) placeras operanderna inuti instruktionen som använder dem, som i (i32.add (local.get $a) (local.get $b)), vilket ofta är lättare att följa. Exporter inline skriver (export "add") inuti funktionen i stället för i en separat lista.
Namn, felsökningsinformation och validering
En .wasm-fil refererar till allt via index. När kompilatorn har behållit en anpassad name-sektion (vanligt i felsökningsbyggen) visar Använd namn från name-sektionen de ursprungliga namnen, som $factorial. Annars genererar wabt namn som $f2 eller $t0 så att texten förblir läsbar. Produktionsbyggen saknar ofta namn, så en minifierad modul visar bara genererade namn.
Valideringen följer WebAssembly-specifikationen: typerna på operandstacken måste stämma, index måste finnas och så vidare. En ogiltig modul disassembleras ändå när strukturen går att läsa, med valideringsfelet bredvid, vilket hjälper när du felsöker en kompilator eller en handskriven binär. Funktioner efter MVP, som SIMD, trådar, bulkminnesoperationer, referenstyper, flera returvärden, svansanrop, undantagshantering, memory64 och skräpsamling, är aktiverade för läsning.
Verktyget använder wabt.js, JavaScript-versionen av WebAssembly Binary Toolkit (wasm2wat). Det laddas först när du öppnar en fil.
Vanliga frågor
Kan jag få tillbaka den ursprungliga C-, C++- eller Rust-koden?
Nej. WAT är en läsbar form av den kompilerade binären, ingen dekompilator: källkoden, kommentarerna och det mesta av typinformationen försvinner vid kompileringen. Funktionsnamn finns bara kvar när name-sektionen har behållits.
Laddas min fil upp?
Nej. Filen läses och disassembleras i din webbläsare, och inget skickas till någon server.
Varför säger verktyget att filen inte är en WebAssembly-binär?
Varje modul börjar med de fyra byten \0asm följda av version 1. En fil med annat innehåll, en fil som är komprimerad med gzip eller Brotli, eller en WebAssembly-komponent (den nyare komponentmodellen) avvisas.
Varför är textrutan avkortad?
Mycket stora moduler kan ge miljontals rader. Textrutan visar den första delen för att sidan ska förbli snabb, och Ladda ner .wat sparar hela texten.
Kan jag köra eller testa modulen här?
Nej. Modulen instansieras avsiktligt aldrig, så dess kod kan inte köras på sidan. Vill du testa den kan du läsa in den i ditt eget projekt eller i en körmiljö som wasmtime eller Node.js.
Relaterade verktyg
- JavaScript AST Explorer Klistra in JavaScript och utforska det abstrakta syntaxträdet (ESTree, tolkat av Acorn) i webbläsaren. Klicka på noder och exportera trädet som JSON.
- Hashgenerator Generera MD5-, SHA-1-, SHA-256- och SHA-512-hashar av text eller filer i valfri storlek och kontrollera kontrollsummor. Allt körs i din webbläsare.
- Base64-kodare och avkodare Gratis Base64-kodare och avkodare med fullt stöd för UTF-8 och ett URL-säkert base64url-läge. Körs helt i din webbläsare, inget laddas upp.