WASM–WAT konvertáló
Alakíts egy .wasm binárist olvasható WAT-szöveggé, ellenőrizd az érvényességét, és listázd a szakaszait, importjait és exportjait, a modul futtatása nélkül.
A modult csak beolvassa és szöveggé alakítja: soha nem fordítja le, nem példányosítja és nem futtatja.
- Méret
- –
- Függvények
- –
- Importok
- –
- Exportok
- –
- Típusok
- –
- Memóriák
- –
- Táblák
- –
- Globális változók
- –
Szakaszok
| Szakasz | Eltolás | Méret | Bejegyzések |
|---|
Importok
| Modul | Név | Fajta | Részletek |
|---|
Exportok
| Név | Fajta | Index |
|---|
Hogyan konvertálj WASM-ot WAT-tá
- Húzz egy
.wasmfájlt a célterületre, vagy kattints rá a kiválasztáshoz (legfeljebb 20 MB). A Példamodul betöltése gombbal egy kis bemutatót is megnézhetsz. - Az eszköz ellenőrzi a binárist, érvényesíti, és megmutatja az eredményt: ✓ A modul érvényes., vagy az okot, amiért nem az.
- Olvasd le a számlálókat: Függvények (importált és definiált), Importok, Exportok, Típusok, Memóriák, Táblák és Globális változók.
- Olvasd el a visszafordítást a WebAssembly szöveges formátum (WAT) mezőben, majd másold ki a Másolás gombbal, vagy nyomd meg a .wat letöltése gombot.
- Finomhangold a kimenetet a beállításokkal: Nevek használata a name szakaszból, Összevont kifejezések (S-kifejezések) és Soron belüli exportok.
- Nyisd meg a Szakaszok, Importok és Exportok táblázatokat a fájl szerkezetéhez: minden szakasz a bájteltolásával, méretével és bejegyzéseinek számával látható.
A modult az eszköz soha nem fordítja le, nem példányosítja és nem futtatja. Csak beolvassa a bájtjait, és szöveggé alakítja őket, így biztonságosan megvizsgálhatsz egy olyan fájlt is, amelyben nem bízol.
Mit mutat a WAT-kimenet
A WebAssemblynek két egyenértékű formátuma van: a tömör .wasm bináris, amelyet a böngészők és futtatókörnyezetek betöltenek, és a .wat szöveges formátum, amely emberek számára készült. A diszasszembler a modul minden részét szöveges formában kiírja: függvénytípusok, importok, függvénytörzsek, táblák, memóriák, globális változók, exportok, a start függvény, az elemszegmensek és az adatszegmensek.
Alapértelmezés szerint az utasítások soronként egyesével, verem-sorrendben szerepelnek, ahogyan tárolva vannak:
(func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add)
Az Összevont kifejezések (S-kifejezések) esetén az operandusok az őket használó utasításba vannak ágyazva, például (i32.add (local.get $a) (local.get $b)), ami gyakran könnyebben követhető. A Soron belüli exportok az (export "add") részt a függvényen belülre írja egy külön lista helyett.
Nevek, hibakeresési információk és érvényesítés
A .wasm fájl mindenre indexszel hivatkozik. Ha a fordító megtartott egy name egyéni szakaszt (hibakeresési buildeknél gyakori), a Nevek használata a name szakaszból az eredeti neveket mutatja, például $factorial. Egyébként a wabt olyan neveket generál, mint a $f2 vagy a $t0, hogy a szöveg olvasható maradjon. A kiadási buildekből gyakran eltávolítják a neveket, ezért egy minifikált modul csak generált neveket mutat.
Az érvényesítés a WebAssembly-specifikációt követi: a típusoknak egyezniük kell az operandusveremben, az indexeknek léteznie kell, és így tovább. Az érvénytelen modult is visszafordítja az eszköz, ha a szerkezete olvasható, mellette az érvényesítési hibával, ami segít egy fordító vagy egy kézzel írt bináris hibakeresésénél. Az MVP utáni funkciók, például a SIMD, a szálak, a tömeges memóriaműveletek, a referenciatípusok, a többértékű visszatérés, a tail call, a kivételkezelés, a memory64 és a szemétgyűjtés az olvasáshoz engedélyezve vannak.
Az eszköz a wabt.js-t használja, a WebAssembly Binary Toolkit (wasm2wat) JavaScript-változatát. Csak akkor töltődik be, amikor megnyitsz egy fájlt.
Gyakori kérdések
Visszakaphatom az eredeti C, C++ vagy Rust forráskódot?
Nem. A WAT a lefordított bináris olvasható formája, nem dekompilátor: a forráskód, a megjegyzések és a legtöbb típusinformáció a fordítás után elvész. A függvénynevek csak akkor maradnak meg, ha a name szakaszt megtartották.
Feltöltésre kerül a fájlom?
Nem. A fájlt a böngésződben olvassa be és fordítja vissza az eszköz; semmi nem kerül elküldésre egy szervernek.
Miért mondja az eszköz, hogy a fájl nem WebAssembly-bináris?
Minden modul a \0asm négy bájttal kezdődik, amelyet az 1-es verzió követ. Elutasításra kerül az a fájl, amelyet más tartalommal szolgáltak ki, gzip vagy Brotli tömörítéssel, vagy amely WebAssembly-komponens (az újabb komponensmodell).
Miért van levágva a szövegmező?
A nagyon nagy modulok akár milliónyi sort is eredményezhetnek. A szövegmező az első részt mutatja, hogy az oldal reszponzív maradjon; a .wat letöltése a teljes szöveget menti.
Futtathatom vagy tesztelhetem itt a modult?
Nem. A modult szándékosan soha nem példányosítja az eszköz, így a kódja nem futhat az oldalon. A teszteléshez töltsd be a saját projektedbe vagy egy futtatókörnyezetbe, például a wasmtime-ba vagy a Node.js-be.
Kapcsolódó eszközök
- JavaScript AST felfedező Illeszd be a JavaScript-kódot, és böngészd az absztrakt szintaxisfáját (ESTree, Acorn) a böngésződben. Kattints a csomópontokra, exportáld JSON-ként.
- Hash generátor Generálj MD5, SHA-1, SHA-256 és SHA-512 hasheket szövegből vagy bármekkora fájlból, és ellenőrizd az ellenőrző összegeket. Minden a böngésződben fut.
- Base64 kódoló és dekódoló Ingyenes Base64 kódoló és dekódoló teljes UTF-8 támogatással és URL-barát base64url opcióval. A böngésződben fut, semmit nem töltünk fel.