Cyflwynodd datblygwyr V8 decompiler ar gyfer WebAssembly

Datblygwyr yr injan JavaScript V8 wedi'i gyflwyno cyfleustodau wasm-decompile, sy'n eich galluogi i ddadgrynhoi'r cynrychiolaeth ddeuaidd canolradd WebAssembly i ffug-iaith ddarllenadwy sy'n atgoffa rhywun o JavaScript a C. Mae'r ffug-iaith arfaethedig yn llawer haws ei deall ac yn fwy addas ar gyfer dosrannu Γ’ llaw na chynrychiolaeth destunol WebCynulliad yn y fformat β€œ.wat”, sy'n agosach at iaith y cynulliad nag at ieithoedd lefel uchel. Yn yr achos hwn, mae'r dadgrynhoi yn adlewyrchu cynrychiolaeth Wasm mor llwyr Γ’ phosibl.

Decompiler cynnwys cynnwys yn y pecyn cymorth WABT, sy'n darparu cyfieithiad rhwng cynrychioliadau deuaidd a thestun o WebAssembly, yn ogystal Γ’ dosrannu, prosesu, addasu a dilysu ffeiliau wasm. Mae WABT hefyd yn datblygu cyfleustodau wasm2c, sy'n caniatΓ‘u i ffeiliau wasm gael eu dadgrynhoi i god C cyfatebol y gellir ei lunio gan gasglwr C, ond nid yw'n llawer gwahanol o ran darllenadwyedd i gynrychiolaeth destunol "wat".

Er enghraifft, y swyddogaeth C gwreiddiol a luniwyd yn wasm

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

dot arnofio (const vec3 *a, const vec3 *b) {
dychwelyd a->x * b->x +
a->y * b->y +
a->z * b->z;
}

yn cael ei ddadgrynhoi gan y cyfleustodau wasm-decompile i mewn i ffug-iaith

dot ffwythiant (a: { a: arnofio, b: arnofio, c: arnofio },
b:{ a: arnofio, b: arnofio, c: arnofio }): arnofio {
dychwelyd aa * ba + ab * bb + ac * bc
}

tra byddai'r trosi i fformat testun ".wat" yn edrych fel hyn

(func $ dot (math 0) (param i32 i32) (canlyniad f32)
(f32.add
(f32.add
(f32.mul
(f32. llwyth
(lleol.get 0))
(f32. llwyth
(lleol.cael 1)))
(f32.mul
(f32.load offset=4
(lleol.get 0))
(f32.load offset=4
(lleol.cael 1))))
(f32.mul
(f32.load offset=8
(lleol.get 0))
(f32.load offset=8
(lleol.cael 1))))))

Ffynhonnell: opennet.ru

Ychwanegu sylw