Zhvilluesit e motorit JavaScript V8 utility , e cila lejon dekompilimin e përfaqësimit të ndërmjetëm binar në një pseudoshqip të lexueshëm, i ngjashëm me JavaScript dhe C. Pseudoshqip i propozuar është ndjeshëm më i lehtë për t'u kuptuar dhe më i përshtatshëm për analizë manuale, sesa përfaqësimi tekstual i WebAssembly në formatin ".wat", i cili është më afër asamblesë se sa gjuhëve të nivelit të lartë. Në të njëjtën kohë, dekompilimi në masë të mundshme reflekton plotësisht përfaqësimin e Wasm.
Dekompilator në grupin e mjeteve , që siguron translacion mes përfaqësimeve binar dhe tekstual të WebAssembly, si dhe analizimin, përpunimin, modifikimin dhe verifikimin e skedarëve wasm. Në grupin e WABT po ashtu zhvillohet utilitari , i cili lejon dekompilimin e skedarëve wasm në kodin ekuivalent në gjuhën C, e cila mund të kompilojë me kompilatorin C, por në aspektin e lexueshmërisë pak ndryshon nga përfaqësimi tekstual "wat".
Për shembull, funksioni i origjinës i C i kompiluar në wasm
typedef struct { float x, y, z; } vec3;
float dot(const vec3 *a, const vec3 *b) {
return a. * b. +
a. * b. +
a. * b.;
}
do të dekompilohet nga utilitari wasm-decompile në pseudoshqip
function dot(a:{ a:float, b:float, c:float },
b:{ a:float, b:float, c:float }):float {
return a.a * b.a + a.b * b.b + a.c * b.c
}
ndërsa konvertimi në formatin tekstual ".wat" do të duket si më poshtë
(func $dot (type 0) (param i32 i32) (result f32)
(f32.add
(f32.add
(f32.mul
(f32.load
(local.get 0))
(f32.load
(local.get 1)))
(f32.mul
(f32.load offset=4
(local.get 0))
(f32.load offset=4
(local.get 1))))
(f32.mul
(f32.load offset=8
(local.get 0))
(f32.load offset=8
(local.get 1))))))
Burimi: opennet.ru
