Twórcy silnika JavaScript V8
Dekompilator
Na przykład oryginalna funkcja C skompilowana w wasm
typedef struct { float x, y, z; } vec3;
zmiennoprzecinkowa kropka(stała vec3 *a, stała vec3 *b) {
zwróć a->x * b->x +
a->y * b->y +
a->z * b->z;
}
zostanie zdekompilowany przez narzędzie wasm-decompile do pseudojęzyka
funkcja kropka(a:{ a:float, b:float, c:float },
b:{ a:float, b:float, c:float }):float {
zwróć aa * ba + ab * bb + ac * bc
}
podczas gdy konwersja do formatu tekstowego „.wat” wyglądałaby tak
(funkcja $kropka (typ 0) (parametr i32 i32) (wynik f32)
(f32.dodaj
(f32.dodaj
(f32.mul
(f32.load
(local.get 0))
(f32.load
(lokalny.get 1)))
(f32.mul
(przesunięcie obciążenia f32.=4
(local.get 0))
(przesunięcie obciążenia f32.=4
(lokalny.get 1))))
(f32.mul
(przesunięcie obciążenia f32.=8
(local.get 0))
(przesunięcie obciążenia f32.=8
(lokalny.get 1))))))
Źródło: opennet.ru