V8 developers praesentavit decompiler pro WebAssembly

Developers de V8 JavaScript engine presented utilitatem wasm-decompile, quod permittit ut repraesentationem intermediam binarii compingas WebAssembly into a readable pseudo-language simile of JavaScript and C. Proposita pseudo-lingua multo facilius est ad intellegendum et aptius ad parsingem manualem quam ad repraesentationem textualem WebAssembly in ".wat" forma, quae propior est linguae collectae quam ad altae linguae. In hoc casu, decompilatio quam omnino quam maxime repraesentationem Wasm refert.

Decompiler includi includitur in toolkit WABTquae praebet translationem inter binarii et textus repraesentationes WebAssembly, necnon parsing, processus, modificatio et verificationis fasciculorum wasm. WABT etiam ad utilitatem developing wasm2c*, quae fasciculi wasm limati in aequipollenti C codici confici possunt qui per C compilator confici potest, sed non multum differt in verbis promptitudinis a repraesentatione textualis "wat".

Exempli gratia, munus originale C in wasm . exaratum

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

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

decompilatur ab wasm-decompile utilitatem in pseudo-lingua

function dot(a:{ a:natat, b: float, c: float},
b:{ a:fluat, b:fluat, c:natat }): fluitat {
redire aa * ba + ab * bb + ac * bc
}

dum conversio ad textum format ".wat" hoc spectare esset

(func $dat (type 0) (param i32 i32)
(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