Madivelopa V8 anapereka decompiler kwa WebAssembly

Opanga injini ya V8 JavaScript zoperekedwa zothandiza wasm-decompile, zomwe zimakulolani kuti muwononge chithunzithunzi chapakati cha binary MaSamba m'chinenero chachinyengo chowerengeka cha JavaScript ndi C. Chilankhulo chabodza chomwe chikufunsidwa ndi chosavuta kumva komanso choyenera kumasulira pamanja kusiyana ndi kuyimira malemba kwa WebAssembly mumtundu wa ".wat", womwe uli pafupi ndi chinenero cha msonkhano kusiyana ndi zinenero zapamwamba. Pankhaniyi, kuwonongeka kumawonetsa chiwonetsero cha Wasm kwathunthu momwe mungathere.

Decompiler kuphatikizapo kuphatikizidwa muzothandizira WABT, yomwe imapereka kumasulira pakati pa ma binary ndi malemba a WebAssembly, komanso kugawa, kukonza, kusintha ndi kutsimikizira mafayilo a wasm. WABT ikupanganso chothandizira wam2c, yomwe imalola mafayilo a wasm kuti asonkhanitsidwe kukhala C code yofanana yomwe ingapangidwe ndi C compiler, koma sizosiyana kwambiri ndi kuwerengeka kuchokera ku mawu oimira "wat".

Mwachitsanzo, ntchito yoyambirira ya C yopangidwa mu wasm

mtundu wa typedef { zoyandama x, y, z; } 3;

dontho loyandama (const vec3 *a, const vec3 *b) {
bwererani a->x * b->x +
a->y * b->y +
a->z * b->z;
}

zidzasonkhanitsidwa ndi wasm-decompile utility kukhala chinenero pseudo

dontho la ntchito (a:{a:float, b:float, c:float},
b:{a:float, b:float, c:float}):float {
bwererani aa * ba + ab * bb + ac * bc
}

pamene kutembenuka kwa malemba ".wat" kungawoneke motere

(func $dot (mtundu 0) (param i32 i32) (zotsatira f32)
(f32.owonjezera
(f32.owonjezera
(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
(zako.pezani 1)))
(f32.mul
(f32.load offset=8
(local.get 0))
(f32.load offset=8
(zako.pezani 1)))))

Source: opennet.ru

Kuwonjezera ndemanga