asm.jsの理解に誤りがあると思います。
まず、FAQから
Q. asm.jsは新しい言語ですか?
A.いいえ、JavaScript(の一部)にすぎません。
そして、あなたは説明を追加することを求めました:
しかし、C ++で1つの[asm.jsアプリケーション]を作成する方法はありますか
「asm.jsアプリケーション」を作成するのではなく、asm.jsがC ++コードをコンパイルするターゲット1です。
John Resigによるこの記事では、asm.jsがどのように使用されるかをより適切に説明できる多くの詳細を提供します。
この画像から開始:
asm.jsがemscriptenの翻訳対象であることがわかります。EmscriptenはLLVMバイトコードのJavaScriptへの変換を処理し、asm.jsはJavaScriptのサブセットです。asm.jsのJavaScriptの制限されたサブセット内にとどまることで、コードを最適化してより高速に実行できます。
あなたも尋ねました:
そして、C ++でコードを記述する場合、js API-sの使用方法
繰り返しますが、あなたは一種のポイントを見逃しています。Asm.jsを使用すると、既存のC / C ++アプリケーションをJavaScriptに移植できるため、ブラウザー内で実行できます。通常、C / C ++コード内でJS APIを使用することはできません。また、asm.jsでそれを許可する魔法はありません。
JS APIを必要とする新しいアプリケーションを作成する場合、C ++で作成してからJavaScriptに移植しようとするのではなく、JSでアプリケーションを作成する必要があります。
Resigの記事に戻ると、質問には2つの重要な引用があります。
近い将来Asm.jsをターゲットとする種類のアプリケーションは、ブラウザーでの実行の移植性の恩恵を受けるものの、JavaScriptへの直接ポートが実行不可能になるレベルの複雑さを持っているアプリケーションです。
そして
おそらく上記のコードからわかるように、Asm.jsは手書きで作成するようには設計されていません。...現在Asm.jsの最も一般的な使用例は、C / C ++からJavaScriptに準拠したアプリケーションです。これらのアプリケーションは、WebGLなどを使用する以外に、意味のある方法でDOMと対話することはほとんどありません。
代わりに行うことを検討したいのは、JavaScriptにコンパイルしたC ++を呼び出すとともに、必要なJS APIを呼び出すJavaScriptプログラムを用意することです。JavaScriptからC ++コードを呼び出す方法を確認するには、このemscriptenチュートリアルをご覧ください。
追加の調査のために、emscriptenにはチュートリアルがあり、C ++コードを取得してLLVMで実行し、asm.jsをターゲットにする方法を理解するのに役立ちます。
1 厳密に言えば、それは真実ではありません。C / C ++コードは、コンパイル先を認識していないため、asm.jsをターゲットと呼ぶことはできません。別のツール(emscripten)はLLVM出力を取得し、asm.js準拠のJavaScriptに変換します。しかし、理解しやすいので、これをターゲットと呼びます。