Utilia

WASM í WAT umbreytir

Umbreyttu .wasm tvíundaskrá í læsilegan WAT-texta, sannreyndu hana og skoðaðu hluta, innflutning, útflutning og föll, í vafranum án þess að keyra eininguna.

Einingin er aðeins lesin og umbreytt í texta: hún er aldrei þýdd, gerð að tilviki né keyrð.

Hvernig á að umbreyta WASM í WAT

  1. Slepptu .wasm skrá á sleppisvæðið, eða smelltu á það til að velja skrá (allt að 20 MB). Þú getur líka ýtt á Hlaða dæmieiningu til að sjá litla sýnikennslu.
  2. Verkfærið athugar tvíundaskrána, sannreynir hana og sýnir niðurstöðuna: ✓ Einingin er gild., eða ástæðuna fyrir því að hún er það ekki.
  3. Lestu teljarana: Föll (innflutt og skilgreind), Innflutningur, Útflutningur, Gerðir, Minni, Töflur og Altækar breytur.
  4. Lestu sundurliðunina í WebAssembly-textasnið (WAT), Afrita hana síðan eða ýttu á Sækja .wat.
  5. Stilltu úttakið með valkostunum: Nota nöfn úr name-hlutanum, Samanbrotnar segðir (S-segðir) og Innlínu útflutningur.
  6. Opnaðu töflurnar Hlutar, Innflutningur og Útflutningur til að sjá uppbyggingu skrárinnar: hver hluti með bætafráviki, stærð og fjölda færslna.

Einingin er aldrei þýdd, gerð að tilviki né keyrð. Verkfærið les aðeins bæti hennar og breytir þeim í texta, þannig að óhætt er að skoða skrá sem þú treystir ekki.

Hvað WAT-úttakið sýnir

WebAssembly hefur tvö jafngild snið: þétta tvíundasniðið .wasm sem vafrar og keyrsluumhverfi hlaða, og textasniðið .wat, sem er ætlað fólki. Sundurliðarinn prentar alla hluta einingarinnar í textaformi: fallagerðir, innflutning, fallatexta, töflur, minni, altækar breytur, útflutning, upphafsfall, frumefnishluta og gagnahluta.

Sjálfgefið eru skipanir taldar upp ein í hverja línu í stafláröð, eins og þær eru geymdar:

(func $add (param $a i32) (param $b i32) (result i32)
  local.get $a
  local.get $b
  i32.add)

Með Samanbrotnar segðir (S-segðir) eru frumbreytur hreiðraðar inni í skipuninni sem notar þær, eins og í (i32.add (local.get $a) (local.get $b)), sem er oft auðveldara að fylgja. Innlínu útflutningur skrifar (export "add") inni í fallinu í stað sérstaks lista.

Nöfn, aflúsunarupplýsingar og sannreyning

.wasm skrá vísar í allt með vísi. Þegar þýðandinn hélt eftir name sérhluta (algengt í aflúsunarsmíðum) sýnir Nota nöfn úr name-hlutanum upprunalegu nöfnin eins og $factorial. Annars býr wabt til nöfn eins og $f2 eða $t0 svo textinn haldist læsilegur. Framleiðslusmíðar eru oft sviptar nöfnum, þannig að smækkuð eining sýnir aðeins mynduð nöfn.

Sannreyning fylgir WebAssembly-skilgreiningunni: gerðir verða að passa á frumbreytustaflanum, vísar verða að vera til, og svo framvegis. Ógild eining er samt sundurliðuð þegar hægt er að lesa uppbyggingu hennar, með sannreyningarvillunni við hliðina, sem hjálpar þegar þú aflúsar þýðanda eða handskrifaða tvíundaskrá. Eiginleikar eftir MVP eins og SIMD, þræðir, bulk memory, tilvísunargerðir, multi-value, tail calls, undantekningameðhöndlun, memory64 og sorphirða eru virkir við lestur.

Verkfærið notar wabt.js, JavaScript-smíð WebAssembly Binary Toolkit (wasm2wat). Það er aðeins hlaðið þegar þú opnar skrá.

Algengar spurningar

Get ég fengið upprunalega C-, C++- eða Rust-frumkóðann til baka?

Nei. WAT er læsileg mynd af þýddu tvíundaskránni, ekki afþýðandi: frumkóðinn, athugasemdir og flestar gerðaupplýsingar hverfa við þýðingu. Fallaheiti lifa aðeins af þegar name-hlutanum var haldið eftir.

Er skránni minni hlaðið upp?

Nei. Skráin er lesin og sundurliðuð í vafranum þínum; ekkert er sent á netþjón.

Af hverju segir verkfærið að skráin sé ekki WebAssembly-tvíundaskrá?

Hver eining byrjar á bætunum fjórum \0asm og síðan útgáfu 1. Skrá með annað innihald, þjöppuð með gzip eða Brotli, eða WebAssembly-íhlutur (nýrra íhlutalíkanið) er hafnað.

Af hverju er textareiturinn skorinn af?

Mjög stórar einingar geta framleitt milljónir lína. Textareiturinn sýnir fyrsta hlutann til að halda síðunni viðbragðsfljótri; Sækja .wat vistar allan textann.

Get ég keyrt eða prófað eininguna hér?

Nei. Eininguna er viljandi aldrei gerð að tilviki, þannig að kóði hennar getur ekki keyrt á síðunni. Til að prófa hana skaltu hlaða henni í þitt eigið verkefni eða keyrsluumhverfi eins og wasmtime eða Node.js.