Ndị mmepe V8 weputara ihe nrụpụta maka WebAssembly

Ndị mmepe nke V8 JavaScript engine ọkọnọ ịba uru wam-na-ezukọta, nke na-enye gị ohere ikpokọta ihe nnọchiteanya ọnụọgụ abụọ nke etiti WebAssembly n'ime asusu pseudo enwere ike gụgharia nke Javascript na C. Asụsụ pseudo a tụrụ aro dị mfe nghọta ma dabara adaba maka ịkọwa akwụkwọ ntuziaka karịa ihe nnochite anya ederede nke WebAssembly na usoro “.wat”, nke dị nso na asụsụ mgbakọ karịa ka ọ dị n'asụsụ dị elu. N'okwu a, nbibi ahụ na-egosipụta ihe nnọchianya Wasm dị ka o kwere mee.

Onye nrụpụta gụnyere gụnyere na ngwa ngwa WABT, nke na-enye ntụgharị asụsụ n'etiti ọnụọgụ abụọ na nnochite anya ederede nke WebAssembly, yana ịkọwapụta, nhazi, mgbanwe na nkwenye nke faịlụ wasm. WABT na-emepụtakwa ngwa ọrụ wam2c, nke na-enye ohere ka a chịkọta faịlụ wasm ka ọ bụrụ koodu C nke nwere ike ịchịkọta ya site na nchịkọta C, mana ọ bụghị ihe dị iche iche n'ihe gbasara ịgụ akwụkwọ site na ihe ngosi ederede nke "wat".

Dịka ọmụmaatụ, ọrụ mbụ C agbakọtara na wasm

typedef struct { sere n'elu x, y, z; } vec3;

ntụpọ sere n'elu (const vec3 *a, const vec3 *b) {
laghachi a->x * b->x +
a->y * b->y +
a->z * b->z;
}

a ga-achịkọta ya site na akụrụngwa na-emebi emebi ka ọ bụrụ asụsụ pseudo

ntụpọ ọrụ (a: {a: sere n'elu, b: sere n'elu, c: sere n'elu},
b:{a:see n'elu, b:see n'elu, c: sere n'elu}): sere n'elu {
nloghachi aa * ba + ab * bb + ac * bc
}

ebe ntụgharị gaa na usoro ederede ".wat" ga-adị ka nke a

(func $ dot (ụdị 0) (param i32 i32) (nsonaazụ f32)
(f32. gbakwunye
(f32. gbakwunye
(f32.mul
(f32.bu
(local. nweta 0))
(f32.bu
(local. nweta 1)))
(f32.mul
(f32.load offset=4
(local. nweta 0))
(f32.load offset=4
(local. nweta 1))))
(f32.mul
(f32.load offset=8
(local. nweta 0))
(f32.load offset=8
(local. nweta 1))))))

isi: opennet.ru

Tinye a comment