問題タブ [emscripten]
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.
javascript - コンパイラでの asm.js の制限
asm.js 仕様に、コンパイラがネイティブ アセンブリ コードを直接生成できないようにする「設計上の制限」があるかどうかを知りたいです。
今のところ、Firefox はネイティブ コードの半分の速度で実行できるようですが、なぜネイティブの速度で実行されないのか疑問に思っています。私が見る限り、asm.js は asm によく似ています。
javascript - emscripten ブラウザの入力方法を window.prompt からより賢明なものに変更するには?
一度呼び出されて stdin からの入力を消費する C++ 関数があります。emscripten を使用してこの関数を JavaScript にエクスポートすると、window.prompt が呼び出されます。
ブラウザのプロンプトを操作するのは、本当に退屈な作業です。まず、一度に 1 行しか貼り付けることができません。次に、EOF を示す唯一の方法は「キャンセル」を押すことです。最後になりましたが、(私の関数の場合) window.prompt による入力をユーザーに求めるのをやめる唯一の方法は、チェックボックスをオンにして、それ以上のプロンプトが表示されないようにすることです。
私にとって最良の入力方法は、ブロブを読み取ることです。library.js をハッキングできることはわかっていますが、いくつか問題があります。
- BLOB の読み取りは非同期です。
- BLOB を読み取るには、まず、ユーザーが最初に選択する必要があるファイルを開く必要があります。
- 関数がこのブロブを永遠に読み取らないようにする方法が本当にわかりません-window.promptのようなチェックボックスはありません.window.promptの場合にEOFを見つけても停止するかどうかはわかりません(のみチェックボックスをオンにすると役立ちました)。
最善の解決策は何らかのコールバックですが、より経験豊富なユーザーからのヒントを見てみたいと思います。
icu - findBasename がないため、icu4c のビルドに失敗する
icu4c 51.1をEmscripten ( clang )でクロスコンパイルしようとしています。
ほとんどのソースを正常にコンパイルしますが、失敗します
だから私は、それがどこを見つけようとしているのか、findBasename
そしてこのデータのコンパイルが何であるかについて疑問に思っています。
編集:
エラー メッセージはicupkg
、この場合は意味をなさない clang でビルドされたものです。ライブラリはclangでビルドされているが、ツールは別のコンパイラでビルドされていることをどのように指定できますか?
compiler-construction - Emscripten でコンパイルするように TCC を変更できますか? そうでない場合、x86 を生成する C コンパイラはどこにありますか?
を解凍した後tcc-0.9.26
、configure を編集して、emcc
代わりにとgcc
を指すようにします。次に、 のインクルードのコメントを外します。ですべてのビルトイン (sub_ddmmss など) を無効にしましたが、Emscripten がアセンブリ ソース ファイル (alloca の実装) をコンパイルしようとするため、エラーが発生し、それを回避する方法がわかりません。emar
ar
ucontext
tcc.h
tccrun
lib/libtcc1.c
javascript - asm.js が通常の JS コードよりも高速な場合、JS で新しいコードを作成する必要があるのはなぜですか?
Emscripten は、手作業で記述した JS コードよりも高速なコードを C/C++ から生成できます。つまり、新しいコードを C/C++ で記述し、コンパイルして Web 上で実行する必要があるということですか?
Emscripten の FAQ を読みましたが、「ぜひ新しい JavaScript コードを書いてください」と書かれていますが、それはなぜですか?
javascript - Emscripten で FTGL を使用する
emscripten でプロジェクト (logstalgia) をビルドしようとしていますが、プロジェクトには ftgl dev ライブラリ (libftgl-dev) が必要です。を実行できるように、このライブラリをリンクする正しい方法を探していましたが、shell> emconfigure logstalgia/configure
このライブラリをコンパイルしてプロジェクトにリンクする方法がわかりません。
私は emscripten のドキュメントを読みましたが、残念ながら gcc を使用したり、makefile を作成したりしてから何年も経っています。
Emscripten は、"Other libraries not included with emscripten, like boost, you would need to compile yourself and link with your program, just as if they were a module in your project."
残念ながら、これが私に何をさせようとしているのかを知るのに十分な事前知識がありません。概念は理解していますが、これを実行する方法がわかりません。どんな助けでも大歓迎です。
c++ - std::array のメンバーへのポインター
次のように、別の構造型のオブジェクトの配列を含む構造があるとします。
特定の配列要素の特定の属性のメンバーへのポインターに評価される式を移植可能に書くことは可能ですか? みたいな&bar::foos[2]::x
?
アプリケーションはembindです: 可能であれば、このようなネストされた C++ 型を線形 JavaScript タプルにマップしたいと思います。メンバーへのポインターを使用してこれがうまくいかない場合は、代わりに getter メソッドと setter メソッドを使用してみることができますが、そのようなメンバーへのポインターを取得する方法があるかどうかを知りたいです。
operating-system - シンプルな x86 エミュレーターとオペレーティング システムの推奨事項
個人的な学習プロジェクトとして、既存の x86 エミュレーター ライブラリを JavaScript に移植し、その上で非常に単純なオペレーティング システムを実行したいと考えています。
emscripten と asm.js を使用してソース ファイルを JavaScript にコンパイルしたいので、ライブラリに対する私の唯一の要件は、C\C++ で記述されている必要があることです。ライブラリは、少なくとも x86 オペコードを解釈できる必要があります。JavaScript の特定の環境の詳細 (メモリ、GUI、割り込みなど) を自分で実装できます。オペレーティング システムは、十分に単純でエミュレータ上で実行できる限り、要件はありません。
これまでの私の調査では、Softx86が最も実行可能なソリューションのように思えます。これは、JavaScript に移植するのに十分単純であるように思われるためです (CPU エミュレーションのみを行います)。私が見つけることができる最も単純な 16 ビット リアルモード オペレーティング システムはMikeOSです。唯一の問題は、Softx86 がエミュレートできない 386 プロセッサが必要であり、それらが完全に互換性があるかどうかわからないことです。
私の質問は、JavaScript に移植できるほど単純なエミュレーター OS の別の組み合わせを誰かが知っているかどうかです。