1. ホーム
  2. javascript

[解決済み] asm.jsとWebAssemblyの違いは何ですか?

2022-11-01 03:47:25

質問

最近、asm.jsとWebAssemblyについて読んでいます。

http://ejohn.org/blog/asmjs-javascript-compile-target/

https://brendaneich.com/2015/06/from-asm-js-to-webassembly/

まだいくつか迷っています。

  1. asm.js のコードは時間内にコンパイルされて実行されるのでしょうか?何にコンパイルされるのですか?
  2. asm.jsはテキストで、wasm(ウェブアセンブリ)はバイナリであること以外に、2つの違いは何ですか?
  3. これは、ブラウザで実行される他のスクリプト言語にとってどのような意味があるのでしょうか?たとえば python の場合、次のようになります。
    • にコンパイルされた Python のコードになるのでしょうか? それとも
    • python インタープリタ (Cpython) が wasm にコンパイルされて python を解釈するか?

どのように解決するのですか?

<ブロッククオート

asm.jsのコードは、時間内にコンパイルされて実行されるのでしょうか?何にコンパイルされるのでしょうか?

asm.jsは通常のjavascriptのコードで、いつものようにJSインタプリタによってバイトコードにコンパイルされます。しかし、asmをサポートするインタープリタは、先読みコンパイルを行うことになっており、おそらく静的型付けにより、より効率的なコード表現を生成することができます。参照 http://asmjs.org/ を参照してください。

<ブロッククオート

asmとwasmの違いは何ですか(テキストとバイナリ以外)?

今のところありません。wasmは後方互換性があるはずです。 asmにコンパイル可能 (これも通常の JS として実行可能です)。しかし、以下のように拡張されるかもしれません。 より多くの機能 で拡張されるかもしれません。

<ブロッククオート

ブラウザで動作する他のスクリプト言語にとって、これはどのような意味を持つのでしょうか?

Python はまだ解釈される必要があるので、むしろ後者です。インタープリターを必要としないスクリプト言語は、ターゲットとしてサポートするコンパイラー (チェーン) があれば、もちろん (w)asm に直接コンパイルすることができます。