1

asm.js 仕様に、コンパイラがネイティブ アセンブリ コードを直接生成できないようにする「設計上の制限」があるかどうかを知りたいです。

今のところ、Firefox はネイティブ コードの半分の速度で実行できるようですが、なぜネイティブの速度で実行されないのか疑問に思っています。私が見る限り、asm.js は asm によく似ています。

4

2 に答える 2

2

制限は現在Typed Array、Javascriptのタイプをメモリとして使用しています(スタックヒープです)。これは、asm.js で生成された Javascript と対話する他のスクリプトが原因であり、共有の「メモリ」スペースが必要です。Typed Arrayまた、 s は実際のヒープ メモリとして実装されていると思いますが、これはスタックを使用するよりも遅くなります。

于 2013-04-13T15:25:11.883 に答える
1

Firefox のコンパイラは、C コンパイラほど asm.js コードにメリットをもたらす最適化を行わないためです。Windows では、コンパイルされたコードが配列アクセスの境界チェックを実行する必要があるため (他の OS では、Firefox の asm.js コンパイラである OdinMonkey がメモリ保護を使用します)。

于 2013-04-15T17:05:08.980 に答える