Disassembler WebAssembly
Konversi biner .wasm menjadi teks WAT yang mudah dibaca, validasi, dan lihat section, import, export, serta fungsinya di browser tanpa menjalankan modul.
Modul hanya dibaca dan dikonversi ke teks: modul tidak pernah dikompilasi, diinstansiasi, atau dijalankan.
- Ukuran
- –
- Fungsi
- –
- Import
- –
- Export
- –
- Tipe
- –
- Memori
- –
- Tabel
- –
- Global
- –
Section
| Section | Offset | Ukuran | Entri |
|---|
Import
| Modul | Nama | Jenis | Detail |
|---|
Export
| Nama | Jenis | Indeks |
|---|
Cara mengonversi WASM ke WAT
- Letakkan file
.wasmdi area unggah, atau klik untuk memilihnya (hingga 20 MB). Anda juga bisa menekan Muat modul contoh untuk melihat demo kecil. - Alat ini memeriksa biner, memvalidasinya, dan menampilkan hasilnya: ✓ Modul valid., atau alasan mengapa modul tidak valid.
- Baca penghitungnya: Fungsi (diimpor dan didefinisikan), Import, Export, Tipe, Memori, Tabel, dan Global.
- Baca hasil disassembly di Format teks WebAssembly (WAT), lalu Salin atau tekan Unduh .wat.
- Sesuaikan hasilnya dengan opsi: Pakai nama dari name section, Ekspresi terlipat (S-expression), dan Export inline.
- Buka tabel Section, Import, dan Export untuk melihat tata letak file: setiap section beserta offset byte, ukuran, dan jumlah entrinya.
Modul tidak pernah dikompilasi, diinstansiasi, atau dijalankan. Alat ini hanya membaca byte-nya dan mengubahnya menjadi teks, sehingga aman untuk memeriksa file yang tidak Anda percayai.
Apa yang ditampilkan hasil WAT
WebAssembly punya dua format yang setara: biner .wasm yang ringkas, yang dimuat browser dan runtime, dan format teks .wat yang ditujukan untuk manusia. Disassembler mencetak setiap bagian modul dalam bentuk teks: tipe fungsi, import, isi fungsi, tabel, memori, global, export, fungsi start, segmen element, dan segmen data.
Secara bawaan, instruksi dicantumkan satu per baris sesuai urutan stack, seperti cara penyimpanannya:
(func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add)
Dengan Ekspresi terlipat (S-expression), operand disarangkan di dalam instruksi yang memakainya, seperti (i32.add (local.get $a) (local.get $b)), yang sering lebih mudah diikuti. Export inline menulis (export "add") di dalam fungsi, bukan di daftar terpisah.
Nama, informasi debug, dan validasi
File .wasm merujuk segala sesuatu berdasarkan indeks. Jika compiler menyimpan custom section name (umum pada build debug), Pakai nama dari name section menampilkan nama aslinya seperti $factorial. Jika tidak, wabt membuat nama seperti $f2 atau $t0 agar teks tetap mudah dibaca. Build produksi sering dihapus namanya, sehingga modul yang di-minify hanya akan menampilkan nama buatan.
Validasi mengikuti spesifikasi WebAssembly: tipe harus cocok di stack operand, indeks harus ada, dan seterusnya. Modul yang tidak valid tetap dibongkar jika strukturnya bisa dibaca, dengan pesan kesalahan validasi di sampingnya, yang membantu saat Anda men-debug compiler atau biner yang ditulis manual. Fitur pasca-MVP seperti SIMD, threads, bulk memory, reference types, multi-value, tail calls, exception handling, memory64, dan garbage collection diaktifkan untuk pembacaan.
Alat ini memakai wabt.js, build JavaScript dari WebAssembly Binary Toolkit (wasm2wat). Pustaka ini hanya dimuat saat Anda membuka file.
Pertanyaan yang sering diajukan
Bisakah saya mendapatkan kembali kode sumber C, C++, atau Rust aslinya?
Tidak. WAT adalah bentuk biner terkompilasi yang bisa dibaca, bukan decompiler: kode sumber, komentar, dan sebagian besar informasi tipe sudah hilang setelah kompilasi. Nama fungsi hanya bertahan jika name section disimpan.
Apakah file saya diunggah?
Tidak. File dibaca dan dibongkar di browser Anda; tidak ada yang dikirim ke server.
Mengapa alat ini menyatakan file saya bukan biner WebAssembly?
Setiap modul diawali empat byte \0asm yang diikuti versi 1. File yang disajikan dengan isi berbeda, dikompresi dengan gzip atau Brotli, atau berupa WebAssembly component (component model yang lebih baru) akan ditolak.
Mengapa kotak teksnya terpotong?
Modul yang sangat besar bisa menghasilkan jutaan baris. Kotak teks menampilkan bagian awalnya agar halaman tetap responsif; Unduh .wat menyimpan teks lengkapnya.
Bisakah saya menjalankan atau menguji modul di sini?
Tidak. Modul sengaja tidak pernah diinstansiasi, sehingga kodenya tidak bisa berjalan di halaman. Untuk mengujinya, muat modul di proyek Anda sendiri atau di runtime seperti wasmtime atau Node.js.
Alat terkait
- JavaScript AST Explorer Tempel JavaScript dan jelajahi abstract syntax tree-nya (ESTree, di-parse oleh Acorn) di browser. Klik node untuk melihat kodenya dan ekspor AST sebagai JSON.
- Generator Hash Buat hash MD5, SHA-1, SHA-256, dan SHA-512 dari teks atau file berukuran berapa pun, dan verifikasi checksum. Semuanya berjalan di browser Anda.
- Encode dan Decode Base64 Encode dan decode Base64 gratis dengan dukungan penuh UTF-8 dan opsi base64url yang aman untuk URL. Berjalan sepenuhnya di browser, tanpa unggahan.