Na faʻalauiloaina e le au atinaʻe V8 se decompiler mo WebAssembly

Atina'e ole masini V8 JavaScript tuuina atu aoga wasm-decompile, lea e mafai ai e oe ona faʻapipiʻi le sui binary intermediate Upega tafaʻilagi i se gagana fa'afoliga e mafai ona faitau e fa'amanatu ai le JavaScript ma le C. O le pseudo-language ua fuafuaina e sili atu ona faigofie ona malamalama ma sili atu ona talafeagai mo le faʻavasegaina o tusi lesona nai lo le faʻaaliga o le WebAssembly i le ".wat", lea e latalata i le gagana faʻapotopotoga nai lo gagana maualuga. I lenei tulaga, o le decompilation e atagia ai le ata o le Wasm i le atoatoa e mafai ai.

Decompiler aofia ai o lo'o i totonu o le meafaigaluega WABT, lea e maua ai le fa'aliliuga i le va o fa'amatalaga binary ma tusitusiga a WebAssembly, fa'apea fo'i ma le fa'avasegaina, fa'agaioiga, suiga ma le fa'amaonia o faila wasm. O loʻo faʻatupuina foi e le WABT se aoga wasm2c, lea e mafai ai ona faʻamavae faila o le wasm i le tutusa C code e mafai ona tuʻufaʻatasia e se C compiler, ae e le tele se eseesega i le tulaga o le faitau mai le faʻamatalaga tusitusia o le "wat".

Mo se faʻataʻitaʻiga, o le uluai galuega C na tuufaatasia i wasm

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

togi fa'afefe(const vec3 *a, const vec3 *b) {
toe fo'i a->x * b->x +
a->y * b->y +
a->z * b->z;
}

o le a decompiled e le aoga wasm-decompile i se pseudo-gagana

galuega togitogi(a:{a:fa'opeopea, b:fa'opeopea, c:fa'opeopea},
b:{ a:opeopea, b:opeopea, c:opeopea }):faopeopea {
toe fo'i aa * ba + ab * bb + ac * bc
}

a'o le liua i le fa'asologa o tusitusiga ".wat" o le a fa'apea

(func $dot (ituaiga 0) (param i32 i32) (i'uga f32)
(f32.faaopoopo
(f32.faaopoopo
(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.maua 1))))))

puna: opennet.ru

Faaopoopo i ai se faamatalaga