Можно
function counter()// модуль asm.js может принимать три аргумента stdlib, foreign, heap
{
// директива инициирующая синтаксис asm
"use asm";
function wass()
{
var wasmCode = new Uint8Array([0,97,115,109,1,0,0,0,1,133,128,128,128,0,1,96,0,1,127,3,131,128,128,128,0,2,0,0,4,132,128,128,128,
0,1,112,0,0,5,131,128,128,128,0,1,0,1,6,129,128,128,128,0,0,7,153,128,128,128,0,3,6,109,101,109,111,114,121,2,0,5,99,111,117,110,
116,0,0,4,109,97,105,110,0,1,10,163,128,128,128,0,2,135,128,128,128,0,0,65,0,40,2,12,11,145,128,128,128,0,0,65,0,65,0,40,2,12,65,
1,106,54,2,12,65,0,11,11,138,128,128,128,0,1,0,65,12,11,4,0,0,0,0]);
//instance - это функция, предоставляющая экземпляр модуля, а метод WebAssembly.Instantiate()
//компилирует и инсталлирует Wasm-code в один шаг
WebAssembly.instantiate(wasmCode).then(({instance}) => {
while(instance.exports.count()<42){
instance.exports.main();console.log(instance.exports.count())
}
});
}
return {wass:wass};//этот синтаксис организует обращение к функциям из глобальной области наподобие классов c++
}
var fast = counter(this);
fast.wass();
Вся эта штука работает в последнем Chrom
Код на си, который был использован для примера
int counter = 0;
int count()
{
return counter;
}
int main()
{
counter = counter+1;
}
читайте тут
developer.mozilla.org/en-US/docs/WebAssembly/Using_the_JavaScript_API