Pangembang V8 nampilake decompiler kanggo WebAssembly

Pangembang mesin JavaScript V8 diwenehi sarana wasm-decompile, sing ngijini sampeyan kanggo decompile perwakilan binar penengah WebAss Assembly dadi basa pseudo sing bisa diwaca kaya JavaScript lan C. Basa pseudo sing diusulake luwih gampang dimangerteni lan luwih cocok kanggo parsing manual tinimbang representasi tekstual WebAssembly ing format ".wat", sing luwih cedhak karo basa perakitan tinimbang basa tingkat dhuwur. Ing kasus iki, dekompilasi nggambarake perwakilan Wasm kanthi lengkap.

Dekompiler klebu kalebu ing toolkit WABT, sing nyedhiyakake terjemahan antarane perwakilan binar lan teks WebAssembly, uga parsing, pangolahan, modifikasi lan verifikasi file wasm. WABT uga ngembangake sarana wasm2c, sing ngidini file wasm bisa dikompilasi dadi kode C sing padha sing bisa dikompilasi dening kompiler C, nanging ora beda banget babagan keterbacaan saka representasi tekstual "wat".

Contone, fungsi C asli dikompilasi ing wasm

typedef struct { ngambang x, y, z; } vec3;

float dot(const vec3 *a, const vec3 *b) {
bali a->x * b->x +
a->y * b->y +
a->z * b->z;
}

bakal didekompilasi dening sarana wasm-decompile dadi basa palsu

fungsi titik(a:{ a:float, b:float, c:float},
b:{ a: ngambang, b: ngambang, c: ngambang }): ngambang {
bali aa * ba + ab * bb + ac * bc
}

nalika konversi menyang format teks ".wat" bakal katon kaya iki

(fungsi $dot (tipe 0) (param i32 i32) (asil f32)
(f32.tambah
(f32.tambah
(f32.mul
(f32.munggah
(lokal.entuk 0))
(f32.munggah
(lokal.entuk 1)))
(f32.mul
(f32.muat offset=4
(lokal.entuk 0))
(f32.muat offset=4
(lokal.entuk 1))))
(f32.mul
(f32.muat offset=8
(lokal.entuk 0))
(f32.muat offset=8
(lokal.entuk 1))))))

Source: opennet.ru

Add a comment