Watengenezaji wa V8 walianzisha kitenganishi cha WebAssembly

Watengenezaji wa injini ya JavaScript ya V8 imewasilishwa matumizi wasm-decompile, ambayo hukuruhusu kutenganisha uwakilishi wa kati wa binary WebAssembly katika lugha ya uwongo inayosomeka kama ukumbusho wa JavaScript na C. Lugha ya uwongo iliyopendekezwa ni rahisi kueleweka na inafaa zaidi kwa uchanganuzi wa mwongozo kuliko uwakilishi wa maandishi wa WebAssembly katika umbizo la ".wat", ambalo liko karibu na lugha ya mkusanyiko kuliko lugha za kiwango cha juu. Katika kesi hii, mtengano unaonyesha uwakilishi wa Wasm kabisa iwezekanavyo.

Decompiler pamoja imejumuishwa kwenye kisanduku cha zana WABT, ambayo hutoa tafsiri kati ya uwasilishaji wa binary na maandishi ya WebAssembly, pamoja na uchanganuzi, usindikaji, urekebishaji na uthibitishaji wa faili za wasm. WABT pia inatengeneza matumizi wasm2c, ambayo huruhusu faili za wasm kugawanywa katika msimbo sawa wa C ambao unaweza kukusanywa na mkusanyaji wa C, lakini sio tofauti sana katika suala la kusomeka na uwakilishi wa maandishi wa "wat".

Kwa mfano, kitendakazi asilia cha C kilichokusanywa katika wasm

muundo wa typedef { kuelea x, y, z; } vec3;

kuelea nukta (const vec3 *a, const vec3 *b) {
rudisha a->x * b->x +
a->y * b->y +
a->z * b->z;
}

itatenganishwa na matumizi ya wasm-decompile kuwa lugha ya uwongo

nukta ya utendaji (a:{ a:float, b:float, c:float },
b:{a:elea, b:elea, c:elea }):elea {
rudisha a.a * b.a + a.b * b.b + a.c * b.c
}

huku ubadilishaji hadi umbizo la maandishi ".wat" lingeonekana hivi

(fanya kazi $dot (aina 0) (param i32 i32) (matokeo f32)
(f32.ongeza
(f32.ongeza
(f32.mul
(f32.mzigo
(ya ndani. pata 0))
(f32.mzigo
(ya ndani.pata 1)))
(f32.mul
(f32.load offset=4
(ya ndani. pata 0))
(f32.load offset=4
(ya ndani.pata 1))))
(f32.mul
(f32.load offset=8
(ya ndani. pata 0))
(f32.load offset=8
(ya ndani. pata 1))))))

Chanzo: opennet.ru

Kuongeza maoni