4
VMが「スタックマシン」または「レジスタマシン」などである必要があるのはなぜですか?
(これは非常に初心者向けの質問です)。 私は仮想マシンについて少し勉強しています。 それらの多くは、物理的または理論的なコンピューターと非常によく似た設計になっています。 たとえば、JVMは「スタックマシン」であると読みました。それが意味することは(そして、私が間違っている場合は私を修正します)、すべての「一時メモリ」をスタックに保存し、そのすべてのオペコードに対してこのスタックで操作を行うことです。 たとえば、ソースコード2 + 3は次のようなバイトコードに変換されます。 push 2 push 3 add 私の質問はこれです: JVMはおそらくC / C ++などを使用して記述されています。もしそうなら、なぜJVMは次のCコードを実行しません:2 + 3..?つまり、なぜスタックが必要なのか、または物理コンピューターのように他のVMの「レジスタ」に必要なのでしょうか? 基礎となる物理CPUがこれらすべてを処理します。VMライターが、VMがプログラミングされている言語の「通常の」命令で、解釈されたバイトコードを単に実行しないのはなぜですか? 実際のハードウェアが既にこれを行っているのに、なぜVMがハードウェアをエミュレートする必要があるのですか? 繰り返しますが、初心者向けの質問です。ご協力いただきありがとうございます