Soo-saareyaasha V8 waxay soo saareen qalab-sameeyaha WebAssembly

Soosaarayaasha mashiinka JavaScript ee V8 soo bandhigay utility wasm-guud, kaas oo kuu ogolaanaya inaad kala furfurto matalaadda binary dhexdhexaadka ah WebAssembly oo loo beddelo luqad been abuur ah oo la akhriyi karo oo u eg JavaScript iyo C. Luqadda been abuurka ah ee la soo jeediyay ayaa aad u fudud in la fahmo oo aad ugu habboon falanqaynta gacanta marka loo eego matalaadda qoraalka ah ee WebAssembly ee qaabka ".wat", kaas oo u dhow luqadda kulanka marka loo eego luqadaha heerka sare ah. Xaaladdan oo kale, kala-goynta ayaa ka tarjumaysa matalaadda Wasm sida ugu macquulsan.

Burburiyaha waxaa ka mid ahaa oo lagu daray agabka WABT, Kaas oo bixisa turjumaada udhaxaysa matalada binary iyo qoraalka ee WebAssembly, iyo sidoo kale falanqaynta, habaynta, wax ka beddelka iyo xaqiijinta faylalka wasm. WABT waxay sidoo kale horumarinaysaa utility wasm2c, taas oo u ogolaanaysa in faylasha wasmka ah loo qaybiyo kood u dhigma oo C ah oo uu soo ururin karo C compiler, laakiin aan wax badan ka duwanayn marka la eego akhriska marka loo eego qoraalka "wat".

Tusaale ahaan, shaqada asalka ah ee C waxa lagu soo ururiyey wasm

qaabka noocadef {sabeen x, y, z; } vec3;

dhibco sabaynaysa (const vec3 *a, const vec3 *b) {
soo celi a->x * b->x +
a->y * b->y +
a->z * b->z;
}

waxa kala qaybin doona utility wasm-compile oo noqon doona luuqad been abuur ah

dhibic shaqo
b:{a:sabbeyn, b:sabbeyn, c:sabbeyn}):sabbeyn {
soo noqo aa * ba + ab * bb + ac * bc
}

halka qaabka qoraalka ".wat" uu u ekaan doono sidan

(func $dot (nooca 0) (param i32 i32) (natiijada f32)
(f32.ku dar
(f32.ku dar
(f32.mul
(f32.load
(maxali ah.hel 0))
(f32.load
(maxali ah.hel 1)))
(f32.mul
(f32.load offset=4
(maxali ah.hel 0))
(f32.load offset=4
(maxali ah.hel 1))))
(f32.mul
(f32.load offset=8
(maxali ah.hel 0))
(f32.load offset=8
(maxali ah.hel 1))))))

Source: opennet.ru

Add a comment