WASM għal WAT – Diżassembler ta’ WebAssembly
Ikkonverti binarju .wasm f’test WAT li jinqara, ivvalidah u elenka t-taqsimiet, l-importazzjonijiet u l-esportazzjonijiet, fil-brawżer mingħajr ma tħaddmu.
Il-modulu jinqara biss u jinbidel f’test: qatt ma jiġi kkompilat, istanzjat jew imħaddem.
- Daqs
- –
- Funzjonijiet
- –
- Importazzjonijiet
- –
- Esportazzjonijiet
- –
- Tipi
- –
- Memorji
- –
- Tabelli
- –
- Globali
- –
Taqsimiet
| Taqsima | Offset | Daqs | Entrati |
|---|
Importazzjonijiet
| Modulu | Isem | Tip | Dettalji |
|---|
Esportazzjonijiet
| Isem | Tip | Indiċi |
|---|
Kif tikkonverti WASM għal WAT
- Waqqa’ fajl
.wasmfiż-żona tat-twaqqigħ, jew ikklikkja fuqha biex tagħżel wieħed (sa 20 MB). Tista’ wkoll tagħfas Tella’ modulu ta’ eżempju biex tara demo żgħir. - L-għodda tiċċekkja l-binarju, tivvalidah u turi r-riżultat: ✓ Il-modulu huwa validu., jew ir-raġuni għaliex mhuwiex.
- Aqra l-kontaturi: Funzjonijiet (importati u definiti), Importazzjonijiet, Esportazzjonijiet, Tipi, Memorji, Tabelli u Globali.
- Aqra d-diżassemblar f’Format tat-test WebAssembly (WAT), imbagħad Ikkopja jew agħfas Niżżel .wat.
- Aġġusta l-output bl-għażliet: Uża l-ismijiet mit-taqsima name, Espressjonijiet mitwija (S-expressions) u Esportazzjonijiet inline.
- Iftaħ it-tabelli Taqsimiet, Importazzjonijiet u Esportazzjonijiet għal-layout tal-fajl: kull taqsima bl-offset tal-byte, id-daqs u n-numru ta’ entrati.
Il-modulu qatt ma jiġi kkompilat, istanzjat jew imħaddem. L-għodda taqra biss il-bytes tiegħu u tibdilhom f’test, għalhekk huwa sigur li tispezzjona fajl li ma tafdax.
X’juri l-output WAT
WebAssembly għandu żewġ formati ekwivalenti: il-binarju kompatt .wasm li l-brawżers u r-runtimes jgħabbu, u l-format tat-test .wat, li huwa maħsub għall-bnedmin. Id-diżassembler jipprintja kull parti tal-modulu f’forma ta’ test: tipi ta’ funzjonijiet, importazzjonijiet, korpi tal-funzjonijiet, tabelli, memorji, globali, esportazzjonijiet, il-funzjoni start, segmenti ta’ elementi u segmenti ta’ data.
B’default, l-istruzzjonijiet jiġu elenkati waħda f’kull linja f’ordni tal-istack, kif jinħażnu:
(func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add)
B’Espressjonijiet mitwija (S-expressions), l-operandi jitqiegħdu ġewwa l-istruzzjoni li tużahom, bħal (i32.add (local.get $a) (local.get $b)), li spiss huwa aktar faċli biex jiġi segwit. Esportazzjonijiet inline jikteb (export "add") ġewwa l-funzjoni minflok f’lista separata.
Ismijiet, informazzjoni ta’ debug u validazzjoni
Fajl .wasm jirreferi għal kollox b’indiċi. Meta l-kompilatur żamm taqsima personalizzata name (komuni fil-builds ta’ debug), Uża l-ismijiet mit-taqsima name juri l-ismijiet oriġinali bħal $factorial. Inkella wabt jiġġenera ismijiet bħal $f2 jew $t0 biex it-test jibqa’ jinqara. Il-builds tal-produzzjoni spiss jitneħħew minnhom l-ismijiet, għalhekk modulu minifikat jurik biss ismijiet iġġenerati.
Il-validazzjoni ssegwi l-ispeċifikazzjoni WebAssembly: it-tipi jridu jaqblu fuq l-istack tal-operandi, l-indiċijiet iridu jeżistu, eċċ. Modulu invalidu xorta jiġi diżassemblat meta l-istruttura tiegħu tkun tista’ tinqara, bl-iżball tal-validazzjoni ħdejh, li jgħin meta tiddibaggja kompilatur jew binarju miktub bl-idejn. Karatteristiċi post-MVP bħal SIMD, threads, bulk memory, reference types, multi-value, tail calls, exception handling, memory64 u garbage collection huma attivati għall-qari.
L-għodda tuża wabt.js, il-bini JavaScript tal-WebAssembly Binary Toolkit (wasm2wat). Titgħabba biss meta tiftaħ fajl.
Mistoqsijiet frekwenti
Nista’ nikseb lura s-sors oriġinali ta’ C, C++ jew Rust?
Le. WAT huwa forma li tinqara tal-binarju kkompilat, mhux dekompilatur: is-sors, il-kummenti u l-biċċa l-kbira tal-informazzjoni tat-tipi jisparixxu wara l-kompilazzjoni. L-ismijiet tal-funzjonijiet jibqgħu biss meta nżammet it-taqsima name.
Il-fajl tiegħi jittella’?
Le. Il-fajl jinqara u jiġi diżassemblat fil-brawżer tiegħek; xejn ma jintbagħat lil server.
Għaliex l-għodda tgħid li l-fajl mhuwiex binarju WebAssembly?
Kull modulu jibda bl-erba’ bytes \0asm segwiti mill-verżjoni 1. Fajl servut b’kontenut differenti, ikkompressat b’gzip jew Brotli, jew komponent WebAssembly (il-mudell il-ġdid tal-komponenti) jiġi rrifjutat.
Għaliex il-kaxxa tat-test hija maqtugħa?
Moduli kbar ħafna jistgħu jipproduċu miljuni ta’ linji. Il-kaxxa tat-test turi l-ewwel parti biex il-paġna tibqa’ responsiva; Niżżel .wat isejvja t-test sħiħ.
Nista’ nħaddem jew nittestja l-modulu hawn?
Le. Il-modulu qatt ma jiġi istanzjat apposta, għalhekk il-kodiċi tiegħu ma jistax jaħdem fil-paġna. Biex tittestjah, għabbih fil-proġett tiegħek stess jew f’runtime bħal wasmtime jew Node.js.
Għodod relatati
- Esploratur AST tal-JavaScript Waħħal JavaScript u esplora s-siġra sintattika astratta tiegħu (ESTree, bl-Acorn) fil-brawżer tiegħek. Ikklikkja n-nodi u esporta l-AST bħala JSON.
- Ġeneratur tal-hash Iġġenera hashes MD5, SHA-1, SHA-256 u SHA-512 ta’ test jew fajls ta’ kwalunkwe daqs, u vverifika checksums. Kollox jaħdem fil-brawżer tiegħek.
- Kodifikatur u dekodifikatur tal-Base64 Kodifikatur u dekodifikatur tal-Base64 b’xejn b’appoġġ sħiħ għall-UTF-8 u għażla base64url sigura għall-URL. Jaħdem kompletament fil-brawżer, xejn ma jittella’.