問題タブ [webassembly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
448 参照

google-chrome - WebAssembly Post-MVP 後のネイティブ クライアントの将来

WebAssembly Post-MVP の後、asm.js は非推奨になると確信しています。現在でも、いくつかの既存の asm.js プロジェクトが WebAssembly を使用し始めています。JS エンジン (V8) も asm.js を WebAssembly にコンパイルし始めるため、古いプロジェクトが移行されなくても、エンド ユーザーは WebAssembly から部分的な利点を得ることができます。

私の質問は、native-client はどうですか? JSエンジンには実装されていないため、問題になる可能性があります。Native-client は今でも廃止されているようです。近い将来、native-client は Chrome から完全に削除されますか? Chrome のバイナリ サイズがいくらか縮小されることを期待しています。

副次的な質問:

  • スレッド/gc/simd/例外が WebAssembly に含まれた後、ネイティブ クライアントにはまだあるが、WebAssembly に欠けているもの (移行をブロックする) はありますか?
  • WebAssembly が MVP に到達するまでに約 2 年かかりましたが、Post-MVP のいずれかが完成するまでの予想時間はどれくらいですか?
  • WebAssembly グループは複数の Post-MVP 機能に 1 つずつではなく一度に取り組んでいるようですが、そのうちの 1 つを完成させるのが遅くなることはありませんか?
0 投票する
1 に答える
1530 参照

webassembly - WebAssembly スタック/スタック ポインターの初期化とメモリ レイアウト

私は現在、LLVM を介してコンパイルされた WebAssembly をいじっていますが、スタック/スタック ポインターと、それが全体的なメモリ レイアウトにどのように関係しているかをまだ理解できていません。

プログラムを実行するにはs2wasmwithを使用する必要があることを学び、これは基本的に生成された廃棄物に (N=8 で) 追加していることを理解しました。バイナリ部分は明らかにメモリ オフセットへのポインタであり、i32 定数はその線形メモリ内のオフセット。--allocate-stack N(data (i32.const 4) "8\00\00\00")

しかし、私がよく理解していないのは、ポインターの値が56(再び N=8 の場合) である理由と、この値がメモリ内のスタックの正確な領域にどのように関連するかです。私の場合、現在は次のようになっています。

0-3: zero 4-7: 56 7-35: other data sections 36-55: zeroes 56-59: zero

私はおそらく「emscriptenを使用するだけ」の候補者であることを知っていますが、これも理解したいと思います。

  • スタック ポインタは常に線形メモリのオフセット 4 に格納されますか?
  • その初期値はどのように計算されますか? (データの後の次のオフセット%16==0 + N に位置合わせ?)
  • それが指すオフセットの前に何が保存され、何が保存されますか?