Um aplicativo asm.js. é muito rápido (quase na velocidade C ++ nativa):
http://kripken.github.io/mloc_emscripten_talk/micro4b.png
Mas como é possível escrever um em C ++, convertê-lo em código LLVM e depois fazer alguns truques com emscripten / asm.js? Não encontrei nenhum tutorial sobre isso.
E se eu escrever o código em C ++, como usar as APIs js, por exemplo, XMLHttpRequest, WebSockets, Canvas ou WebGL?
c++
javascript
llvm
LO kaka
fonte
fonte
Respostas:
Eu acredito que você está enganado em sua compreensão de asm.js .
Primeiro, a partir do FAQ
E você pediu esclarecimentos adicionados :
Você não escreve um "aplicativo asm.js.", mas sim o asm.js. é o alvo 1 para compilar seu código C ++.
Este artigo de John Resig fornece vários detalhes que podem explicar melhor como o asm.js seria usado.
Começando com esta imagem:
você pode ver que o asm.js é um destino de tradução do emscripten . O Emscripten manipula a tradução do bytecode do LLVM em JavaScript, e o asm.js é um subconjunto de JavaScript. Permanecer no subconjunto restrito de JavaScript do asm.js. permite que o código seja otimizado e executado mais rapidamente.
Você também perguntou:
Novamente, você está meio que perdendo o objetivo. O Asm.js permite transportar aplicativos C / C ++ existentes para JavaScript, para que possam ser executados em um navegador. Normalmente, você não seria capaz de usar APIs JS no seu código C / C ++, e não há nada mágico no asm.js para permitir isso.
Se você tiver um novo aplicativo para gravação que precise de APIs JS, deverá gravá-lo em JS e não futz tentando gravar em C ++ e, em seguida, portar para JavaScript.
E voltando ao artigo de Resig, há duas citações principais para sua pergunta:
e
O que você pode querer considerar fazer é ter um programa JavaScript que chame as APIs JS necessárias, além de fazer chamadas para o C ++ que você compilou para JavaScript. Dê uma olhada neste tutorial emscripten para ver como chamar o código C ++ do JavaScript.
Para alguma pesquisa adicional, o emscripten possui um tutorial que pode ajudá-lo a entender como usar o código C ++, executá-lo no LLVM e, em seguida, direcionar para asm.js.
1 Estritamente falando, isso não é verdade. O código C / C ++ não tem conhecimento do que será compilado, então não posso realmente chamar o asm.js de destino. Outra ferramenta (emscripten) pega a saída do LLVM e depois converte para JavaScript compatível com asm.js. Mas vou chamá-lo de alvo porque é mais fácil de entender.
fonte
Sim, você pode escrever o código C ++ e compilá-lo no asm.js, usando o emscripten. Eu ainda não tentei e não tenho certeza de como isso está pronto para o horário nobre. Parece ser bom o suficiente para rodar um monte de jogos.
Aqui está um tutorial: http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html . Olhando para o tutorial, parece bastante fácil compilar código C ++:
fonte
emcc
seria válido?A maneira mais fácil seria usar o WCPP , um pacote que permite importar C ++ quase diretamente no seu projeto Node.
Nosso C ++
No terminal (para compilar nosso C ++)
Nosso JavaScript
Para obter mais informações, consulte o pacote NPM ou o repositório Git.
fonte