Abathuthukisi be-V8 bethule i-decompiler yeWebAssembly

Abathuthukisi benjini ye-V8 JavaScript kwethulwe usizo i-wasm-decompile, okukuvumela ukuthi uhlukanise ukumelwa okuphakathi kanambambili I-WebAssembly olimini-mbumbulu olufundekayo olukhumbuza i-JavaScript no-C. Ulimi-mbumbulu oluhlongozwayo kulula kakhulu ukuluqonda futhi lufaneleka kakhulu ekuhlaziyweni mathupha kunokumelwa kombhalo kwe-WebAssembly ngefomethi ethi β€œ.wat”, eseduze nolimi lokuhlanganisa kunezilimi ezisezingeni eliphezulu. Kulokhu, ukuhlukaniswa kukhombisa ukumelwa kwe-Wasm ngokuphelele ngangokunokwenzeka.

I-Decompiler kuhlanganisiwe kufakwe kwikhithi yamathuluzi WABT, ehlinzeka ngokuhumusha phakathi kokumelwa okunambambili nombhalo we-WebAssembly, kanye nokuhlaziya, ukucubungula, ukuguqulwa nokuqinisekiswa kwamafayela e-wam. I-WABT nayo ithuthukisa insiza owam2c, okuvumela amafayela e-wasm ukuthi ahlanganiswe abe ikhodi engu-C efanayo engahlanganiswa umdidiyeli we-C, kodwa ayihlukile kakhulu ngokuya ngokufundeka kokumelwa kombhalo kokuthi "wat".

Isibonelo, umsebenzi woqobo C ohlanganiswe ku-wasm

uhlobo lwe-typedef {float x, y, z; } ivec3;

ichashazi elintantayo (const vec3 *a, const vec3 *b) {
buyisela a->x * b->x +
a->y * b->y +
a->z * b->z;
}

izohlukaniswa yinsiza ye-wasm-decompile ibe ulimi-mbumbulu

ichashazi lomsebenzi(a:{a:float,b:float,c:float },
b:{ a:ntanta, b:ntanta, c:ntanta}):ntanta {
buyisela aa * ba + ab * bb + ac * bc
}

kuyilapho ukuguqulwa kufomethi yombhalo ethi ".wat" izobukeka kanje

(func $dot (uhlobo 0) (param i32 i32) (umphumela f32)
(f32.engeza
(f32.engeza
(f32.mul
(f32.layisha
(indawo.thola 0))
(f32.layisha
(okwendawo.thola 1)))
(f32.mul
(f32.load offset=4
(indawo.thola 0))
(f32.load offset=4
(okwendawo.thola 1))))
(f32.mul
(f32.load offset=8
(indawo.thola 0))
(f32.load offset=8
(okwendawo.thola 1))))))

Source: opennet.ru

Engeza amazwana