Sie haben bereits beschrieben, was es ist . Die Verwendung ist, dass es sich um eine einfache Sprache handelt, die in allen Browsern funktioniert , in den meisten Fällen recht schnell und in einigen Fällen sehr schnell ist. Was Sie daraus machen, ist so offen wie das, was Sie mit jeder anderen Programmiersprache machen.
Der Anwendungsfall, an dem Mozilla am meisten interessiert zu sein scheint, ist folgender: Es gibt bereits Möglichkeiten, Sprachen mit LLVM-Backends (am bekanntesten C und C ++) über Emscripten zu JavaScript zu kompilieren. asm.js kommt dem, was Emscripten bereits ausgibt, sehr nahe, so dass Emscripten-Code (der auf den heutigen JavaScript-JIT-Compilern bereits beeindruckend schnell ist) noch schneller werden kann, was das Ziel der Portierung vorhandener Codebasen ins Web fördert. Wofür genau Sie dies verwenden, ist Ihre Entscheidung. Das Portieren von Spielen ist ein Anwendungsfall (an dem Mozilla offenbar aktiv beteiligt ist), aber es gibt unzählige in C und C ++ geschriebene Dinge, von denen einige für die Website von jemandem nützlich sein könnten. Einige, die ich herumgeschleudert gesehen habe (und einige, die ich mir ausgedacht habe), ohne Gewähr für die Machbarkeit:
- Portierung von Allzweckalgorithmen (z. B. zlib, libjpeg, openssl, FFT-Implementierungen), um JavaScript / Websites zu ermöglichen, mehr zu tun, ohne einen neuen Webstandard erstellen zu müssen und abhängig von den einzelnen Browsern, um ihn zu implementieren.
- Portierung von Interpretern, damit andere Sprachen als JavaScript mit geringerem Aufwand und minimalem Portierungsaufwand im Browser ausgeführt werden können.
- Verwenden von asm.js als Backend für mehr Compiler, insbesondere für solche, die JavaScript nicht gut zuordnen können und die die meisten Funktionen und den Overhead nicht benötigen. Ein Beispiel könnte eine Sprache sein, die für schnelles numerisches Arbeiten ohne Speicherzuweisung entwickelt wurde.
- Verwenden von asm.js zum Erstellen einer JIT in JavaScript. Es kann jede Sprache implementieren - zum Beispiel ActionScript .
- Ebenso die Portierung bestehender JIT-Compiler für die Ausführung im Browser (vgl. Portierung von Interpretern mit praktisch keinem Overhead über JS). Dies ist wahrscheinlich nur möglich, wenn JIT-Compiler wie bei PyPy automatisch generiert werden.
Stellen Sie sich ASM.js als einen großen binären ArrayBuffer vor, der als Heap und eine Reihe von JavaScript-Modulen bezeichnet wird und mit einer Prolog-Direktive beginnt. Führen Sie
"use asm";
schnelle Operationen auf niedriger Ebene mit binären Rohdaten aus, ähnlich wie in Assemblersprachen. Diese Module könnten von Hand geschrieben oder besser mit Skripten wie Emscripten aus LLVM-Code kompiliert werden. Ihre Leistung konnte dank der Mozilla OdinMonkey-Engine gesteigert werden, sie sind jedoch mit den meisten modernen ECMAScript-Interpreten abwärtskompatibel.ASM.js ist nicht auf Spiele beschränkt, Sie können sogar ganze Qt-Apps in Ihrem Browser ausführen, wie diese !
quelle