Ответы пользователя по тегу Java
  • Можно ли с помощью LLVM соединять куски кода с разных языков?

    @SOKR
    Можно
    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
    Ответ написан
    4 комментария