Vagadziri veV8 vakaratidza decompiler yeWebAssembly

Vagadziri veV8 JavaScript injini yakaunzwa utility wasm-decompile, iyo inokubvumira kuti uparadze iyo yepakati bhinari inomiririra web assembly mumutauro unoverengeka wemanyepo unoyeuchidza JavaScript uye C. Mutauro wekunyepedzera unonzi uri nyore kunzwisisa uye wakakodzera kupatsanurwa kwemaoko pane kumiririra zvinyorwa zveWebAssembly muchimiro che ".wat", chiri pedyo nemutauro wegungano pane mitauro yepamusoro. Muchiitiko ichi, iyo decompilation inoratidza iyo Wasm inomiririra zvizere sezvinobvira.

Decompiler inosanganisirwa inosanganisirwa mubhokisi rekushandisa WABT, iyo inopa shanduro pakati pemabhinari uye zvinyorwa zvinomiririra zveWebAssembly, pamwe nekuparadzanisa, kugadzirisa, kugadzirisa uye kuvimbiswa kwemafaira ewam. WABT iri kugadzirawo chishandiso wasm2c, iyo inobvumira mafaira ewasm kuti agadziriswe muC code yakaenzana inogona kuunganidzwa neC compiler, asi haina kunyanya kusiyana maererano nekuverenga kubva kune zvinyorwa zvinomiririra "wat".

Semuenzaniso, yekutanga C basa rakabatanidzwa mu wasm

typedef chimiro { float x, y, z; } vec3;

chinoyangarara (const vec3 *a, const vec3 *b) {
dzorera a->x * b->x +
a->y * b->y +
a->z * b->z;
}

ichakanganiswa neiyo wasm-decompile utility kuita pseudo-mutauro

basa dot(a:{a:float,b:float,c:float},
b:{a:float, b:float, c:float }):float {
dzoka aa * ba + ab * bb + ac * bc
}

ukuwo kushandurwa kuita mavara efomati ".wat" angaite seizvi

(fanc $dot (rudzi 0) (param i32 i32) (zvabuda f32)
(f32.add
(f32.add
(f32.mul
(f32.load
(local.tora 0))
(f32.load
(yemuno.wana 1)))
(f32.mul
(f32.load offset=4
(local.tora 0))
(f32.load offset=4
(yemuno.wana 1))))
(f32.mul
(f32.load offset=8
(local.tora 0))
(f32.load offset=8
(yemuno.wana 1)))))

Source: opennet.ru

Voeg