V8 JavaScript แซแ แแแแก แแแแแแแแแ แแแ แฌแแ แแแแแแแแแ แกแแกแแ แแแแแ wasm-decompile, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแแฎแแ แชแแแแแ แจแฃแแแแแฃแ แ แแ แแแแแ แฌแแ แแแแแแแ WebAssembly แฌแแกแแแแแฎแแ แคแกแแแแแแแแแ, แ แแแแแแช แแแแแแแแแแ JavaScript-แก แแ C. แจแแแแแแแแแแแฃแแ แคแกแแแแแแแ แแแแ แแ แฃแคแ แ แแแแแแแ แแแกแแแแแ แแ แฃแคแ แ แจแแกแแคแแ แแกแแ แฎแแแแ แแแแแแแแแแกแแแแก, แแแแ แ WebAssembly-แแก แขแแฅแกแขแฃแ แ แฌแแ แแแแแแแ โ.watโ แคแแ แแแขแจแ, แ แแแแแแช แฃแคแ แ แแฎแแแกแแ แแกแแแแแแแก แแแแกแแแ, แแแแ แ แแแฆแแแ แแแแแก แแแแแแแ. แแ แจแแแแฎแแแแแจแ, แแแแแแแแแแชแแ แแกแแฎแแแก Wasm-แแก แฌแแ แแแแแแแแก แ แแช แจแแแซแแแแ แกแ แฃแแแ.
แแแแแแแแแแ แ แจแแแแก แจแแแแก แแแกแขแ แฃแแแแขแแ แแแแแแแฅแขแจแ WABT, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก WebAssembly-แแก แแ แแแแ แแ แขแแฅแกแขแฃแ แฌแแ แแแแแแแแแก แจแแ แแก แแแ แแแแแก, แแกแแแ wasm แคแแแแแแแก แแแแแแแก, แแแแฃแจแแแแแแก, แแแแแคแแแแชแแแก แแ แแแแแแแฌแแแแแก. WABT แแกแแแ แแแแแแ แแแก แแแแฃแแแแฃแ แแ แแแ แแแแก wasm2c, แ แแแแแแช แแซแแแแ wasm แคแแแแแแแก แแแแแแแแแแ แแแแก แแแแแแแแแแขแฃแ C แแแแจแ, แ แแแแแแช แจแแแซแแแแ แจแแแแแก C แแแแแแแแ แแก แแแแ , แแแแ แแ แฌแแแแแฎแแแก แแแแแกแแแ แแกแแ แแแแแ แแ แแแแกแฎแแแแแแแ "wat"-แแก แขแแฅแกแขแฃแ แ แฌแแ แแแแแแแแกแแแ.
แแแแแแแแแ, แแ แแแแแแแฃแ แ C แคแฃแแฅแชแแ แจแแแแแแแแ wasm-แจแ
typedef struct { float x, y, z; } vec3;
float dot(const vec3 *a, const vec3 *b) {
แแแแแ แฃแแแ a->x * b->x +
a->y * b->y +
แ->แ * แ->แ;
}
wasm-decompile แฃแขแแแแขแแก แแแแ แแแแแแแแแแ แแแฃแแ แแฅแแแแ แคแกแแแแแแแแแ
แคแฃแแฅแชแแ dot(a:{ a:float, b:float, c:float },
b:{ a:float, b:float, c:float }):float {
แแแแ แฃแแแแ aa * ba + ab * bb + ac * bc
}
แฎแแแ แขแแฅแกแขแแก แคแแ แแแขแจแ แแแแแงแแแแ ".wat" แแกแ แแแแแแงแฃแ แแแ
(func $dot (แขแแแ 0) (param i32 i32) (แจแแแแแ f32)
(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))))))
แฌแงแแ แ: opennet.ru