Une application asm.js est très rapide (proche de la vitesse native C ++):
http://kripken.github.io/mloc_emscripten_talk/micro4b.png
Mais comment est-il possible d'en écrire un en C ++, de le convertir en code LLVM, puis de faire un tour avec emscripten / asm.js? Je n'ai trouvé aucun tutoriel à ce sujet.
Et si j'écris le code en C ++, alors comment utiliser les API js, par exemple XMLHttpRequest, WebSockets, Canvas ou WebGL?
c++
javascript
llvm
LO kaka
la source
la source
Réponses:
Je crois que vous vous trompez dans votre compréhension de asm.js .
Tout d'abord, à partir de leur FAQ
Et vous avez demandé des éclaircissements ajoutés :
Vous n'écrivez pas une "application asm.js", mais asm.js est une cible 1 pour compiler votre code C ++.
Cet article de John Resig fournit un certain nombre de détails qui pourraient mieux expliquer comment asm.js serait utilisé.
En commençant par cette image:
vous pouvez voir que asm.js est une cible de traduction pour emscripten . Emscripten gère la traduction du bytecode LLVM en JavaScript, et asm.js est un sous-ensemble de JavaScript. Rester dans le sous-ensemble restreint de asm.js de JavaScript permet d'optimiser le code et de l'exécuter plus rapidement.
Vous avez également demandé:
Encore une fois, vous manquez le point. Asm.js permet de porter des applications C / C ++ existantes en JavaScript afin qu'elles puissent être exécutées dans un navigateur. Normalement, vous ne pourriez pas utiliser les API JS dans votre code C / C ++, et il n'y a rien de magique dans asm.js pour permettre cela.
Si vous avez une nouvelle application à écrire qui a besoin d'API JS, vous devez écrire l'application en JS et non futz en essayant d'écrire en C ++, puis de la porter en JavaScript.
Et pour revenir à l'article de Resig, il y a deux citations clés pour votre question:
et
Ce que vous voudrez peut-être envisager à la place, c'est d'avoir un programme JavaScript qui appelle les API JS dont vous avez besoin, ainsi que des appels au C ++ que vous avez compilé en JavaScript. Jetez un œil à ce didacticiel emscripten pour voir comment appeler du code C ++ à partir de JavaScript.
Pour quelques recherches supplémentaires, emscripten propose un didacticiel qui pourrait vous aider à comprendre comment prendre le code C ++, l'exécuter via LLVM, puis cibler asm.js.
1 Strictement parlant, ce n'est pas vrai. Le code C / C ++ ne sait pas à quoi il va être compilé, donc je ne peux pas vraiment appeler asm.js une cible. Un autre outil (emscripten) prend la sortie LLVM puis traduit en JavaScript compatible asm.js. Mais je vais appeler cela un objectif car il est plus facile à comprendre.
la source
Oui, vous pouvez écrire du code C ++ et le compiler dans asm.js, en utilisant emscripten. Je ne l'ai pas essayé moi-même et je ne sais pas à quel point c'est prêt pour les heures de grande écoute. Il semble cependant être assez bon pour exécuter un tas de jeux.
Voici un tutoriel: http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html . En regardant le tutoriel, il semble assez facile de compiler du code C ++:
la source
emcc
serait-elle valide?La façon la plus simple serait d'utiliser WCPP , un package qui vous permet d'importer C ++ presque directement dans votre projet Node.
Notre C ++
Dans le terminal (pour compiler notre C ++)
Notre JavaScript
Pour plus d'informations, consultez le NPM Package ou le Git Repo
la source