Zhvilluesit e V8 prezantuan dekoduesin për WebAssembly

Zhvilluesit e motorit JavaScript V8 paraqitën utility wasm-decompile, e cila lejon dekompilimin e përfaqësimit të ndërmjetëm binar WebAssembly 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 aktivizuar në grupin e mjeteve WABT, 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 wasm2c, 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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster