Chuir forbróirí V8 díchoimilitheoir i láthair do WebAssembly

Forbróirí an inneall V8 JavaScript curtha i láthair fóntais wasm-decompile, a ligeann duit an ionadaíocht dénártha idirmheánach a dhí-chomhdhlúthú WebAssembly isteach i dteanga bhréige inléite a mheabhraíonn JavaScript agus C. Tá an bhréagtheanga mholta i bhfad níos éasca le tuiscint agus níos oiriúnaí do pharsáil láimhe ná léiriú téacsúil WebAssembly san fhormáid “.wat”, atá níos gaire do theanga an tionóil ná do theangacha ardleibhéil. Sa chás seo, léiríonn an dí-thiomsú ionadaíocht Wasm chomh hiomlán agus is féidir.

Decompiler san áireamh san áireamh sa fhoireann uirlisí WABT, a sholáthraíonn aistriúchán idir léiriúcháin dhénártha agus téacs de WebAssembly, chomh maith le parsáil, próiseáil, modhnú agus fíorú comhaid wasm. Tá áirgiúlacht á fhorbairt ag WABT freisin bhím2c, a cheadaíonn comhaid wasm a dhíthiomsú isteach i gcód C coibhéiseach is féidir le tiomsaitheoir C a thiomsú, ach nach bhfuil mórán difriúil ó thaobh inléiteachta de agus léiriú téacsúil "wat".

Mar shampla, an fheidhm C bunaidh a tiomsaíodh i wasm

typedef struct { snámhphointe x, y, z; } vec3;

snámhphointe (const vec3 *a, const vec3 *b) {
ar ais a->x * b->x +
a->y * b->y +
a->z * b->z;
}

déanfar é a dhíthiomsú ag an áirgiúlacht wasm-decompile go teanga bhréige

feidhm ponc(a:{ a: snámhphointe, b: snámhphointe, c: snámh },
b:{ a: snámh, b: snámhphointe, c: snámh }): snámh {
ar ais aa* ba+ab* bb+ac*bc
}

agus bheadh ​​cuma mar seo ar an gcomhshó go formáid téacs ".wat".

(func $dot (cineál 0) (param i32 i32) (toradh f32)
(f32. cuir
(f32. cuir
(f32.mul
(f32. luchtú
(áit. faigh 0))
(f32. luchtú
(áit. faigh 1)))
(f32.mul
(f32.load offset=4
(áit. faigh 0))
(f32.load offset=4
(áit. faigh 1))))
(f32.mul
(f32.load offset=8
(áit. faigh 0))
(f32.load offset=8
(áit. faigh 1))))))

Foinse: oscailtenet.ru

Add a comment