Eine asm.js-Anwendung ist sehr schnell (nahezu native C ++ - Geschwindigkeit):
http://kripken.github.io/mloc_emscripten_talk/micro4b.png
Aber wie ist es möglich, eine in C ++ zu schreiben, sie in LLVM-Code umzuwandeln und dann einen Trick mit emscripten / asm.js zu machen? Ich habe kein Tutorial dazu gefunden.
Und wenn ich den Code in C ++ schreibe, wie verwende ich dann die js-APIs, zum Beispiel XMLHttpRequest, WebSockets, Canvas oder WebGL?
c++
javascript
llvm
LO kaka
quelle
quelle
Antworten:
Ich glaube , dass Sie in Ihrem Verständnis der irrt asm.js .
Zunächst einmal aus ihren FAQ
Und Sie baten um Klarstellung hinzugefügt :
Sie schreiben keine "asm.js" -Anwendung, sondern asm.js ist ein Ziel 1 zum Kompilieren Ihres C ++ - Codes.
Dieser Artikel von John Resig enthält eine Reihe von Details, die möglicherweise die Verwendung von asm.js besser erläutern.
Mit diesem Bild beginnen:
Sie können sehen, dass asm.js ein Übersetzungsziel von emscripten ist . Emscripten übersetzt den LLVM- Bytecode in JavaScript, und asm.js ist eine Teilmenge von JavaScript. Durch die Einhaltung der eingeschränkten JavaScript-Untermenge von asm.js kann der Code optimiert und schneller ausgeführt werden.
Sie haben auch gefragt:
Auch hier verpassen Sie den Punkt. Mit Asm.js können vorhandene C / C ++ - Anwendungen in JavaScript portiert und in einem Browser ausgeführt werden. Normalerweise können Sie in Ihrem C / C ++ - Code keine JS-APIs verwenden, und das lässt sich durch nichts Magisches an asm.js ändern.
Wenn Sie eine neue Anwendung zum Schreiben haben, die JS-APIs benötigt, sollten Sie die Anwendung in JS schreiben und nicht mit dem Versuch, in C ++ zu schreiben und dann auf JavaScript zu portieren, herumspielen.
Und zurück zu Resigs Artikel, es gibt zwei Schlüsselzitate für Ihre Frage:
und
Möglicherweise möchten Sie stattdessen ein JavaScript-Programm verwenden, das die erforderlichen JS-APIs aufruft und das C ++ aufruft, das Sie mit JavaScript kompiliert haben. In diesem emscripten-Tutorial erfahren Sie , wie Sie C ++ - Code aus JavaScript aufrufen.
Für zusätzliche Recherchen bietet emscripten ein Lernprogramm , mit dessen Hilfe Sie lernen können , wie Sie C ++ - Code verwenden, ihn über LLVM ausführen und dann asm.js als Ziel festlegen.
1 Genau genommen stimmt das nicht. Der C / C ++ - Code weiß nicht, wohin er kompiliert werden soll, daher kann ich asm.js nicht wirklich als Ziel aufrufen. Ein anderes Tool (emscripten) übernimmt die LLVM-Ausgabe und übersetzt sie in asm.js kompatibles JavaScript. Aber ich werde es ein Ziel nennen, weil es einfacher zu verstehen ist.
quelle
Ja, Sie können C ++ - Code schreiben und mit emscripten in die Datei asm.js kompilieren. Ich habe es nicht selbst ausprobiert und bin mir nicht sicher, wie bereit es für die Prime Time ist. Es scheint jedoch gut genug zu sein, um eine Reihe von Spielen zu spielen.
Hier ist ein Tutorial: http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html . Wenn man sich das Tutorial ansieht, scheint es ziemlich einfach, C ++ - Code zu kompilieren:
quelle
emcc
gültig?Am einfachsten ist es, WCPP zu verwenden , ein Paket, mit dem Sie C ++ fast direkt in Ihr Node-Projekt importieren können.
Unser C ++
Im Terminal (um unser C ++ zu kompilieren)
Unser JavaScript
Weitere Informationen finden Sie im NPM-Paket oder im Git Repo
quelle