V8 ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื“ืขืจืœืื ื’ื˜ ืึท ื“ืขืงืึธืžืคึผื™ืœืขืจ ืคึฟืึทืจ ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™

ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืคื•ืŸ ื“ื™ V8 ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืžืึธื˜ืึธืจ ื“ืขืจืœืื ื’ื˜ ื ื•ืฆืŸ ื•ื•ืึทืกื-ื“ืขืงืึธืžืคึผื™ืœืข, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื“ืขืงืึธืžืคึผื™ืœืข ื“ื™ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื‘ื™ื™ื ืขืจื™ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ืื™ืŸ ืึท ืœื™ื™ื ืขื•ื•ื“ื™ืง ืคึผืกืขื•ื•ื“ืึธ-ืฉืคึผืจืึทืš ืจืขืžืึทื ื™ืกืึทื ื˜ ืคื•ืŸ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืื•ืŸ ืกื™. ื“ื™ ืคืืจื’ืขืœื™ื™ื’ื˜ ืคึผืกืขื•ื•ื“ืึธ-ืฉืคึผืจืึทืš ืื™ื– ืคื™ืœ ื’ืจื™ื ื’ืขืจ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืื•ืŸ ืžืขืจ ืคึผืึทืกื™ืง ืคึฟืึทืจ ืžืึทื ื•ืึทืœ ืคึผืึทืจืกื™ื ื’ ื•ื•ื™ ื“ื™ ื˜ืขืงืกื˜ืฉืึทื•ื•ืึทืœ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ืคื•ืŸ ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ืื™ืŸ ื“ื™ ".ื•ื•ืื˜" ืคึฟืึธืจืžืึทื˜, ื•ื•ืึธืก ืื™ื– ื ืขืขื ื˜ืขืจ ืฆื• ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืฉืคึผืจืึทืš ื•ื•ื™ ืฆื• ื”ื•ื™ืš-ืžื“ืจื’ื” ืฉืคึผืจืึทื›ืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ื“ืขืงืึธืžืคึผื™ืœืึทื˜ื™ืึธืŸ ืจื™ืคืœืขืงืก ื“ื™ ื•ื•ืึทืกื ืคืึทืจื˜ืจืขื˜ื•ื ื’ ื•ื•ื™ ื’ืึธืจ ื•ื•ื™ ืžืขื’ืœืขืš.

ื“ืขืงืึธืžืคึผื™ืœืขืจ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ืžื›ืฉื™ืจื™ื WABT, ื•ื•ืึธืก ื’ื™ื˜ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืฆื•ื•ื™ืฉืŸ ื‘ื™ื™ื ืขืจื™ ืื•ืŸ ื˜ืขืงืกื˜ ืจืขืคึผืจืึทื–ืึทื ื˜ื™ื™ืฉืึทื ื– ืคื•ืŸ ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืคึผืึทืจืกื™ื ื’, ืคึผืจืึทืกืขืกื™ื ื’, ืžืึธื“ื™ืคื™ืงืึทื˜ื™ืึธืŸ ืื•ืŸ ื•ื•ืขืจืึทืคืึทืงื™ื™ืฉืึทืŸ ืคื•ืŸ ื•ื•ืึทืกื ื˜ืขืงืขืก. WABT ืื™ื– ืื•ื™ืš ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืึท ื ื•ืฆืŸ wasm2c, ื•ื•ืึธืก ืึทืœืึทื•ื– ื•ื•ืึทืกื ื˜ืขืงืขืก ืฆื• ื–ื™ื™ืŸ ื“ืขืงืึธืžืคึผื™ื™ืœื“ ืื™ืŸ ืขืงื•ื•ื™ื•ื•ืึทืœืขื ื˜ C ืงืึธื“ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทืžืคึผื™ื™ืœื“ ื“ื•ืจืš ืึท C ืงืึทืžืคึผื™ื™ืœืขืจ, ืึธื‘ืขืจ ืื™ื– ื ื™ืฉื˜ ืคื™ืœ ืึทื ื“ืขืจืฉ ืื™ืŸ ื˜ืขืจืžื™ื ืขืŸ ืคื•ืŸ ืจื™ื“ืึทื‘ื™ืœื™ื˜ื™ ืคื•ืŸ ื“ื™ ื˜ืขืงืกื˜ืฉืึทื•ื•ืึทืœ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ืคื•ืŸ "ื•ื•ืื˜".

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ C ืคึฟื•ื ืงืฆื™ืข ืฆื•ื ื•ื™ืคื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื•ื•ืึทืกื

ื˜ื™ืคึผื“ืขืฃ ืกื˜ืจื•ืงื˜ื•ืจ { ืคืœืึธื•ื˜ ืจืขื ื˜ื’ืขื , ื™, ื–; } ื•ื•ืขืง3;

ืคืœืึธื•ื˜ ืคึผื•ื ืงื˜ (const vec3 * a, const vec3 * b) {
ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึท -> ืจืขื ื˜ื’ืขื  * ื‘-> ืจืขื ื˜ื’ืขื  +
ืึท->ื™ * ื‘->ื™ +
ืึท->ื– * ื‘->ื–;
}

ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ืขืงืึธืžืคึผื™ืœืขื“ ื“ื•ืจืš ื“ื™ ื•ื•ืึทืกื-ื“ืขืงืึธืžืคึผื™ืœืข ื ื•ืฆืŸ ืื™ืŸ ืึท ืคึผืกืขื•ื•ื“ืึธ-ืฉืคึผืจืึทืš

ืคึฟื•ื ืงืฆื™ืข ืคึผื•ื ืงื˜ (ืึท: {ืึท: ืคืœืึธื•ื˜, ื‘: ืคืœืึธื•ื˜, C: ืคืœืึธื•ื˜},
ื‘: {ืึท: ืคืœืึธื•ื˜, ื‘: ืคืœืึธื•ื˜, C: ืคืœืึธื•ื˜ }): ืคืœืึธื•ื˜ {
ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึทืึท * ื‘ืึท + ืึทื‘ * ื‘ + ืึทืง * ื‘ืง
}

ื‘ืฉืขืช ื“ื™ ืงืึทื ื•ื•ืขืจื–ืฉืึทืŸ ืฆื• ื˜ืขืงืกื˜ ืคึฟืึธืจืžืึทื˜ ".ื•ื•ืื˜" ื•ื•ืึธืœื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก

(ืคื•ื ืง $ ืคึผื•ื ืงื˜ (ื˜ื™ืคึผ 0) (ืคึผืึทืจืึทื i32 i32) (ืจืขื–ื•ืœื˜ืึทื˜ ืค32)
(f32.add
(f32.add
(f32.mul
(f32.load
(local.get 0))
(f32.load
(local.get 1)))
(f32.mul
(f32.load ืึธืคืกืขื˜ = 4
(local.get 0))
(f32.load ืึธืคืกืขื˜ = 4
(local.get 1))))
(f32.mul
(f32.load ืึธืคืกืขื˜ = 8
(local.get 0))
(f32.load ืึธืคืกืขื˜ = 8
(local.get 1))))))

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’