WebAssembly-disassembleri
Muunna .wasm-binääri luettavaksi WAT-tekstiksi, tarkista kelvollisuus ja listaa osiot, tuonnit, viennit ja funktiot selaimessasi ajamatta moduulia.
Moduuli vain luetaan ja muunnetaan tekstiksi: sitä ei koskaan käännetä, instantioida tai ajeta.
- Koko
- –
- Funktiot
- –
- Tuonnit
- –
- Viennit
- –
- Tyypit
- –
- Muistit
- –
- Taulukot
- –
- Globaalit
- –
Osiot
| Osio | Siirtymä | Koko | Merkintöjä |
|---|
Tuonnit
| Moduuli | Nimi | Laji | Tiedot |
|---|
Viennit
| Nimi | Laji | Indeksi |
|---|
Näin muunnat WASMin WAT-muotoon
- Pudota
.wasm-tiedosto pudotusalueelle tai napsauta sitä valitaksesi tiedoston (enintään 20 Mt). Voit myös painaa Lataa esimerkkimoduuli nähdäksesi pienen esimerkin. - Työkalu tarkistaa binäärin, validoi sen ja näyttää tuloksen: ✓ Moduuli on kelvollinen. tai syyn, miksi se ei ole.
- Lue laskurit: Funktiot (tuodut ja määritellyt), Tuonnit, Viennit, Tyypit, Muistit, Taulukot ja Globaalit.
- Lue disassemblointi kohdasta WebAssemblyn tekstimuoto (WAT) ja Kopioi se tai paina Lataa .wat.
- Säädä tulostetta asetuksilla: Käytä nimiä name-osiosta, Laskostetut lausekkeet (S-lausekkeet) ja Rivinsisäiset viennit.
- Avaa taulukot Osiot, Tuonnit ja Viennit nähdäksesi tiedoston rakenteen: jokainen osio tavusiirtymineen, kokoineen ja merkintöjen määrineen.
Moduulia ei koskaan käännetä, instantioida tai ajeta. Työkalu vain lukee sen tavut ja muuttaa ne tekstiksi, joten on turvallista tutkia tiedostoa, johon et luota.
Mitä WAT-tuloste näyttää
WebAssemblylla on kaksi vastaavaa muotoa: tiivis binäärinen .wasm, jonka selaimet ja ajoympäristöt lataavat, ja tekstimuoto .wat, joka on tarkoitettu ihmisille. Disassembleri tulostaa jokaisen moduulin osan tekstimuodossa: funktiotyypit, tuonnit, funktioiden rungot, taulukot, muistit, globaalit, viennit, aloitusfunktion, elementtisegmentit ja datasegmentit.
Oletuksena käskyt listataan yksi per rivi pinon järjestyksessä, siinä muodossa kuin ne on tallennettu:
(func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add)
Asetuksella Laskostetut lausekkeet (S-lausekkeet) operandit sisäkkäistetään niitä käyttävän käskyn sisään, kuten (i32.add (local.get $a) (local.get $b)), mitä on usein helpompi seurata. Rivinsisäiset viennit kirjoittaa (export "add") funktion sisään erillisen listan sijaan.
Nimet, virheenkorjaustiedot ja validointi
.wasm-tiedosto viittaa kaikkeen indeksein. Kun kääntäjä on säilyttänyt name-mukautetun osion (yleistä virheenkorjausversioissa), Käytä nimiä name-osiosta näyttää alkuperäiset nimet, kuten $factorial. Muuten wabt luo nimiä, kuten $f2 tai $t0, jotta teksti pysyy luettavana. Tuotantoversioista nimet usein poistetaan, joten minimoitu moduuli näyttää vain luotuja nimiä.
Validointi noudattaa WebAssembly-määrittelyä: tyyppien on täsmättävä operandipinossa, indeksien on oltava olemassa ja niin edelleen. Virheellinen moduuli disassembloidaan silti, kun sen rakenne voidaan lukea, ja validointivirhe näytetään sen vieressä, mikä auttaa kääntäjän tai käsin kirjoitetun binäärin virheenkorjauksessa. MVP:n jälkeiset ominaisuudet, kuten SIMD, säikeet, bulk memory, viitetyypit, multi-value, tail call, poikkeustenkäsittely, memory64 ja roskienkeruu, on otettu käyttöön lukemista varten.
Tämä työkalu käyttää wabt.js:ää, WebAssembly Binary Toolkitin (wasm2wat) JavaScript-versiota. Se ladataan vasta, kun avaat tiedoston.
Usein kysytyt kysymykset
Saanko alkuperäisen C-, C++- tai Rust-lähdekoodin takaisin?
Et. WAT on käännetyn binäärin luettava muoto, ei dekompiloija: lähdekoodi, kommentit ja suurin osa tyyppitiedoista häviävät käännöksessä. Funktioiden nimet säilyvät vain, jos name-osio on säilytetty.
Lähetetäänkö tiedostoni palvelimelle?
Ei. Tiedosto luetaan ja disassembloidaan selaimessasi; mitään ei lähetetä palvelimelle.
Miksi työkalu sanoo, ettei tiedosto ole WebAssembly-binääri?
Jokainen moduuli alkaa neljällä tavulla \0asm, jota seuraa versio 1. Eri sisältöä oleva tiedosto, gzipillä tai Brotlilla pakattu tiedosto tai WebAssembly-komponentti (uudempi komponenttimalli) hylätään.
Miksi tekstikenttä on katkaistu?
Hyvin suuret moduulit voivat tuottaa miljoonia rivejä. Tekstikenttä näyttää alkuosan, jotta sivu pysyy responsiivisena; Lataa .wat tallentaa koko tekstin.
Voinko ajaa tai testata moduulia täällä?
Et. Moduulia ei tarkoituksella koskaan instantioida, joten sen koodi ei voi suoriutua sivulla. Testaa se omassa projektissasi tai ajoympäristössä, kuten wasmtime tai Node.js.
Aiheeseen liittyvät työkalut
- JavaScript AST Explorer Liitä JavaScript ja tutki sen abstraktia syntaksipuuta (ESTree, Acorn) selaimessa. Napsauta solmuja nähdäksesi koodin ja vie AST JSON-muodossa.
- Hash-generaattori Luo MD5-, SHA-1-, SHA-256- ja SHA-512-tiivisteet tekstistä tai minkä kokoisista tiedostoista tahansa ja tarkista tarkistussummat. Kaikki toimii selaimessa.
- Base64-koodaus ja -purku Ilmainen Base64-koodaus ja -purku täydellä UTF-8-tuella ja URL-turvallisella base64url-vaihtoehdolla. Toimii selaimessa, mitään ei lähetetä palvelimelle.