問題タブ [vm-implementation]
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.
perl - オウムとは正確には何ですか?
Parrot が仮想マシンであることは理解していますが、その背後にある考え方を完全には把握していないように感じます。
私が理解しているように、それは複数の言語を処理するために作成されている仮想マシンです。これは正しいです?
インタプリタだけでなく仮想マシンを使用する利点は何ですか?
Parrot は具体的に何をしていて、これほどまでに大きな成果をあげているのでしょうか?
language-agnostic - レジスタとスタック
レジスタベースの仮想マシンとスタックベースの仮想マシンを使用することの利点と欠点は何ですか?
私には、レジスター・ベースのマシンの方がプログラミングがより簡単で効率的であるように思えます。では、JVM、CLR、および Python VM がすべてスタックベースであるのはなぜでしょうか?
.net - .NETメモリ管理は、ネイティブコードよりもマネージコードの方が高速ですか?
マネージコードの方がネイティブコードよりもメモリ割り当てが速いかどうかは明らかだと思いましたが、いくつかの論争があるようです。おそらく、OSへのコンテキスト交換呼び出しがないため、仮想マシンでのメモリ管理は高速ですが、VM自体がOSを定期的に呼び出してメモリを増やす必要があり、メモリ自体の管理オーバーヘッドがあります。 OSではなく。
私のように根拠のない主張をするのではなく、あなたの立場を裏付ける参考文献へのリンクを提供してください。
compiler-construction - 新しい動的計画法言語のバックエンドの選択?
私はそれを楽しむためにSmalltalkの亜種を開発してきましたが、バックエンドをターゲットにすることになると、stackoverflowersの仲間の選択肢は何でしょうか。これらは私の現在の考慮事項でした:
.NET、JVM:これら2つのVMは主に静的型付け言語用であり、smalltalkのような動的言語をターゲットにするのは非常に難しいと思います。
Python(ソースコードとして):最も簡単な方法のようです。また、Pythonバイトコードを出力できればより良いでしょうが、他のVMのAFAIKとして十分に文書化されていません(詳細についてはPythonのソースコードを掘り下げる必要があります!)。
自作の通訳:面白くないので問題外です:-)
LLVM、NekoVM、Parrotは、私がチェックしている他のオプションです。これについてどう思いますか?
vm-implementation - 未来の仮想マシン
将来の仮想マシン(jvm や clr など)に関するリソースを探しています。
彼らはどのように見えるでしょうか?それらは、並行ランタイム、より強力なメタプログラミング モデルを提供しますか?
記事、研究プロジェクト、純粋な憶測など、興味深い読み物を探しています。
したがって、リンクや意見があれば共有してください。
vm-implementation - シンプルな解釈言語の設計と実装
シンプルな仮想マシンとインタープリター言語を実装するためのリソースが必要です。実用的なものが最も役に立ちます。Virtual Machine Implementation の本を読みましたが、かなり古く、現在目にする VM を表していないことがわかりました。また、誰かがかなり単純化された言語を知っていれば、それも素晴らしいでしょう.
pointers - 参照とポインタの実行速度
私は最近、マネージ言語がネイティブ言語よりも遅い (または速い) かどうか (具体的には C# と C++) に関する議論を読みました。議論に貢献したある人は、マネージ言語の JIT コンパイラーは、ポインターを使用する言語では不可能な参照に関する最適化を行うことができると述べました。
私が知りたいのは、ポインターではなく参照で可能な最適化の種類は何ですか?
議論はメモリ使用量ではなく、実行速度に関するものであることに注意してください。
operators - プリミティブな Forth 演算子とは?
Forth システムの実装に興味があります。単純な VM とランタイムを構築する経験を積むためです。
Forth を開始する場合、通常、最初にスタックとその演算子 (DROP、DUP、SWAP など) について学習するため、これらを基本的な演算子の 1 つと考えるのが自然です。しかし、そうではありません。それらのそれぞれは、メモリとスタック ポインターを直接操作する演算子に分解できます。後で、DUP や SWAP などの実装に使用できるストア (!) とフェッチ (@) について学びます (ha!)。
では、プリミティブ演算子とは何でしょう? 他のすべてをビルドできるランタイム環境に直接実装する必要があるのはどれですか? 高性能には興味がありません。私 (そして他の人) が学べる何かが欲しいのです。オペレーターの最適化は後で行うことができます。
(はい、私はチューリング マシンから始めて、そこから行くことができることを認識しています。それは少し極端です。)
編集: 私が目指しているのは、オペレーティング システムまたは新しいコンパイラのブートストラップに似ています。これらの基本的な構成要素からシステムの残りの部分を構築できるようにするには、少なくとも何を実装する必要がありますか? これをベア ハードウェアに実装するつもりはありません。教育的な演習として、私は独自の最小限の VM を作成します。
java - Java の仮想マシンと CLR
MSIL と Java バイトコードの違いと呼ばれる質問への一種のフォローアップとして? 、Java 仮想マシンの動作と。ネットフレームワーク共通言語ランタイム (CLR) は動作しますか?
また、。ネットフレームワークCLRは「仮想マシン」ですか、それとも仮想マシンの属性を持っていませんか?