Desensamblador de WebAssembly
Converteix un binari .wasm en text WAT llegible, valida'l i llista seccions, importacions, exportacions i funcions, al navegador sense executar-lo.
El mòdul només es llegeix i es converteix en text: no es compila, no s'instancia ni s'executa mai.
- Mida
- –
- Funcions
- –
- Importacions
- –
- Exportacions
- –
- Tipus
- –
- Memòries
- –
- Taules
- –
- Globals
- –
Seccions
| Secció | Desplaçament | Mida | Entrades |
|---|
Importacions
| Mòdul | Nom | Classe | Detalls |
|---|
Exportacions
| Nom | Classe | Índex |
|---|
Com convertir WASM a WAT
- Deixa anar un fitxer
.wasma la zona de càrrega, o fes-hi clic per triar-ne un (fins a 20 MB). També pots prémer Carrega un mòdul d’exemple per veure una petita demostració. - L’eina comprova el binari, el valida i mostra el resultat: ✓ El mòdul és vàlid., o el motiu pel qual no ho és.
- Llegeix els comptadors: Funcions (importades i definides), Importacions, Exportacions, Tipus, Memòries, Taules i Globals.
- Llegeix el desensamblatge a Format de text de WebAssembly (WAT) i després Copia‘l o prem Baixa el .wat.
- Ajusta la sortida amb les opcions: Utilitza els noms de la secció de noms, Expressions plegades (expressions S) i Exportacions en línia.
- Obre les taules Seccions, Importacions i Exportacions per veure l’estructura del fitxer: cada secció amb el seu desplaçament en bytes, la mida i el nombre d’entrades.
El mòdul no es compila, no s’instancia ni s’executa mai. L’eina només en llegeix els bytes i els converteix en text, de manera que és segur inspeccionar un fitxer en què no confies.
Què mostra la sortida WAT
WebAssembly té dos formats equivalents: el binari compacte .wasm que carreguen els navegadors i els entorns d’execució, i el format de text .wat, pensat per a les persones. El desensamblador imprimeix en forma de text totes les parts del mòdul: tipus de funció, importacions, cossos de funció, taules, memòries, globals, exportacions, la funció d’inici, segments d’elements i segments de dades.
Per defecte, les instruccions es llisten d’una en una per línia, en l’ordre de la pila, tal com s’emmagatzemen:
(func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add)
Amb Expressions plegades (expressions S), els operands s’imbriquen dins de la instrucció que els fa servir, com a (i32.add (local.get $a) (local.get $b)), cosa que sovint és més fàcil de seguir. Exportacions en línia escriu (export "add") dins de la funció en lloc d’una llista a part.
Noms, informació de depuració i validació
Un fitxer .wasm es refereix a tot per índex. Quan el compilador ha conservat una secció personalitzada name (habitual en les compilacions de depuració), Utilitza els noms de la secció de noms mostra els noms originals com $factorial. Si no, wabt genera noms com $f2 o $t0 perquè el text continuï sent llegible. Les compilacions de producció sovint no tenen els noms, de manera que un mòdul minificat només mostrarà noms generats.
La validació segueix l’especificació de WebAssembly: els tipus han de coincidir a la pila d’operands, els índexs han d’existir, i així successivament. Un mòdul no vàlid es desensambla igualment quan se’n pot llegir l’estructura, amb l’error de validació al costat, cosa que ajuda quan depures un compilador o un binari escrit a mà. Les funcions posteriors al MVP, com SIMD, fils, memòria en bloc, tipus de referència, valors múltiples, crides terminals, gestió d’excepcions, memory64 i recollida d’escombraries, estan activades per a la lectura.
Aquesta eina utilitza wabt.js, la compilació en JavaScript del WebAssembly Binary Toolkit (wasm2wat). Només es carrega quan obres un fitxer.
Preguntes freqüents
Puc recuperar el codi font original en C, C++ o Rust?
No. WAT és una forma llegible del binari compilat, no un descompilador: el codi font, els comentaris i la major part de la informació de tipus es perden en compilar. Els noms de les funcions només sobreviuen quan s’ha conservat la secció de noms.
Es puja el meu fitxer?
No. El fitxer es llegeix i es desensambla al teu navegador; no s’envia res a cap servidor.
Per què l'eina diu que el fitxer no és un binari de WebAssembly?
Tots els mòduls comencen amb els quatre bytes \0asm seguits de la versió 1. Es rebutjarà un fitxer servit amb un altre contingut, comprimit amb gzip o Brotli, o un component de WebAssembly (el model de components més nou).
Per què el quadre de text està tallat?
Els mòduls molt grans poden produir milions de línies. El quadre de text mostra la primera part per mantenir la pàgina fluida; Baixa el .wat desa el text complet.
Puc executar o provar el mòdul aquí?
No. El mòdul no s’instancia mai de manera intencionada, de manera que el seu codi no es pot executar a la pàgina. Per provar-lo, carrega’l al teu propi projecte o en un entorn d’execució com wasmtime o Node.js.
Eines relacionades
- Explorador d'AST de JavaScript Enganxa codi JavaScript i explora'n l'arbre de sintaxi abstracta (ESTree, amb Acorn) al navegador. Fes clic als nodes i exporta l'AST en JSON.
- Generador de hash (MD5, SHA-256) Genera hashos MD5, SHA-1, SHA-256 i SHA-512 de text o de fitxers de qualsevol mida i verifica sumes de verificació. Tot s'executa al navegador.
- Codificador i descodificador de Base64 Codifica i descodifica Base64 gratis, amb suport complet d'UTF-8 i l'opció base64url segura per a URL. Funciona al navegador, sense pujar res.