Una aplicación asm.js es muy rápida (casi la velocidad nativa de C ++):
http://kripken.github.io/mloc_emscripten_talk/micro4b.png
Pero, ¿cómo es posible escribir uno en C ++, convertirlo a código LLVM y luego hacer algún truco con emscripten / asm.js? No he encontrado ningún tutorial al respecto.
Y si escribo el código en C ++, ¿cómo usar las API de js, por ejemplo XMLHttpRequest, WebSockets, Canvas o WebGL?
c++
javascript
llvm
LO Kaka
fuente
fuente
Respuestas:
Creo que se equivoca en su comprensión de asm.js .
Primero, de sus preguntas frecuentes
Y pediste aclaraciones añadidas :
No escribe una "aplicación asm.js", sino que asm.js es un destino 1 para compilar su código C ++.
Este artículo de John Resig proporciona una serie de detalles que pueden explicar mejor cómo se usaría asm.js.
Comenzando con esta imagen:
puede ver que asm.js es un objetivo de traducción de emscripten . Emscripten maneja la traducción del código de bytes LLVM a JavaScript, y asm.js es un subconjunto de JavaScript. Mantenerse dentro del subconjunto restringido de JavaScript de asm.js permite que el código se optimice y se ejecute más rápido.
También preguntaste:
De nuevo, te estás perdiendo el punto. Asm.js permite portar aplicaciones C / C ++ existentes a JavaScript para que puedan ejecutarse dentro de un navegador. Normalmente no podría usar las API de JS dentro de su código C / C ++, y no hay nada mágico en asm.js para permitir eso.
Si tiene una nueva aplicación para escribir que necesita API JS, entonces debe escribir la aplicación en JS y no tratar de escribir en C ++ y luego transferir a JavaScript.
Y volviendo al artículo de Resig, hay dos citas clave para su pregunta:
y
Lo que quizás desee considerar hacer es tener un programa de JavaScript que llame a las API de JS que necesita junto con realizar llamadas al C ++ que compiló en JavaScript. Eche un vistazo a este tutorial emscripten para ver cómo llamar al código C ++ desde JavaScript.
Para algunas investigaciones adicionales, emscripten tiene un tutorial que puede ayudarlo a comenzar a comprender cómo tomar el código C ++, ejecutarlo a través de LLVM y luego apuntar a asm.js.
1 Hablando estrictamente, eso no es cierto. El código C / C ++ no es consciente de lo que se va a compilar, por lo que realmente no puedo llamar a asm.js como objetivo. Otra herramienta (emscripten) toma la salida LLVM y luego la traduce a JavaScript compatible con asm.js. Pero lo llamaré un objetivo porque es más fácil de entender.
fuente
Sí, puede escribir código C ++ y compilarlo en asm.js, utilizando emscripten. No lo he probado yo mismo, y no estoy seguro de qué tan preparado está para el horario estelar. Sin embargo, parece ser lo suficientemente bueno como para ejecutar un montón de juegos.
Aquí hay un tutorial: http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html . Mirando el tutorial, parece bastante fácil compilar código C ++:
fuente
emcc
sería válido el uso de ?La forma más fácil sería usar WCPP , un paquete que le permite importar C ++ casi directamente en su proyecto Node.
Nuestro C ++
En la terminal (para compilar nuestro C ++)
Nuestro JavaScript
Para obtener más información, consulte el paquete NPM o el repositorio de Git
fuente