Ny mpamorona V8 dia nampiditra decompiler ho an'ny WebAssembly

Mpamorona ny motera JavaScript V8 aseho utility wasm-decompile, izay ahafahanao manafoana ny fanehoana binary mpanelanelana WebAss Assembly amin'ny fiteny pseudo azo vakina mampahatsiahy ny JavaScript sy C. Ny teny pseudo natolotra dia mora azo kokoa ary mety kokoa amin'ny famakafakana amin'ny tanana noho ny fanehoana an-tsoratra ny WebAssembly amin'ny endrika β€œ.wat”, izay manakaiky kokoa ny fiteny fivoriambe noho ny fiteny avo lenta. Amin'ity tranga ity, ny decompilation dia maneho tanteraka ny fanehoana Wasm araka izay azo atao.

Decompiler tafiditra tafiditra ao anatin'ny kitapom-pitaovana WABT, izay manome fandikan-teny eo amin'ny fanehoana binary sy lahatsoratra an'ny WebAssembly, ary koa ny famafazana, ny fanodinana, ny fanovana ary ny fanamarinana ny rakitra wasm. WABT dia mamolavola fitaovana iray ihany koa wasm2c, izay mamela ny rakitra wasm ho voavaha ho kaody C mitovy amin'izany izay azo angonin'ny mpanangom-bokatra C, saingy tsy dia hafa loatra amin'ny resaka famakian-teny amin'ny fanehoana an-tsoratra ny "wat".

Ohatra, ny asa C tany am-boalohany natambatra tao amin'ny wasm

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

teboka mitsingevana(const vec3 *a, const vec3 *b) {
miverena a->x * b->x +
a->y * b->y +
a->z * b->z;
}

hofoanan'ny utility wasm-decompile ho lasa teny pseudo

teboka (a:{ a:float, b:float, c:float },
b:{ a:mitsingevana, b:mitsingevana, c:mitsingevana }):mitsingevana {
miverena aa * ba + ab * bb + ac * bc
}

raha toa ka toy izao ny fiovam-po amin'ny endrika lahatsoratra ".wat".

(func $dot (karazana 0) (param i32 i32) (valiny 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))))))

Source: opennet.ru

Add a comment