I tukuna e nga kaiwhakawhanake V8 he kaiwhakawhanake mo WebAssembly

Nga Kaihanga o te miihini V8 JavaScript i tukuna whaipainga wasm-decompile, e taea ai e koe te whakahiato i te tohu-rua takawaenga Paetukutuku ki te reo pseudo ka taea te panui e maumahara ana ki a JavaScript me C. Ko te reo pseudo-reo he maamaa ake te maarama me te pai ake mo te poroporoaki a-ringa i te ahua o te tuhinga a WebAssembly i roto i te whakatakotoranga ".wat", he tata atu ki te reo huihuinga i nga reo taumata teitei. I tenei keehi, ka whakaatahia e te whakahiatotanga te whakaaturanga Wasm i te mea ka taea.

Kaiwhakahirahira whakaurua kei roto i te kete taputapu WABT, e whakarato ana i te whakamaoritanga i waenga i nga whakaaturanga a-rua me nga tuhinga o WebAssembly, me te poroporoaki, te tukatuka, te whakarereketanga me te manatoko o nga konae wasm. Kei te whakawhanake ano te WABT i tetahi taputapu wasm2c, ka taea te whakahiato i nga konae wasm ki te tohu C rite ka taea te whakahiato e te kaitoi C, engari kaore i tino rerekee mo te panui mai i te ahua o te kupu "wat".

Hei tauira, ko te mahi C taketake i whakahiato ki wasm

typedef struct { mānu x, y, z; } vec3;

ira mānu(const vec3 *a, const vec3 *b) {
hoki mai a->x * b->x +
a->y * b->y +
a->z * b->z;
}

ka wetewetehia e te taputapu wasm-decompile ki te reo pseudo

taumahi ira(a:{ a:float, b:float, c:float },
b:{ a:float, b:float, c:float }):float {
hoki mai aa * ba + ab * bb + ac * bc
}

i te tahuri ki te whakatakotoranga kuputuhi ".wat" ka penei te ahua

(func $dot (momo 0) (param i32 i32) (hua f32)
(f32.tāpiri
(f32.tāpiri
(f32.mul
(f32.uta
(local.get 0))
(f32.uta
(local.get 1)))
(f32.mul
(f32.whakaekea te kawenga=4
(local.get 0))
(f32.whakaekea te kawenga=4
(local.get 1))))
(f32.mul
(f32.whakaekea te kawenga=8
(local.get 0))
(f32.whakaekea te kawenga=8
(local. tiki 1))))))

Source: opennet.ru

Tāpiri i te kōrero