タグ付けされた質問 「bytecode」

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



3
なぜPythonにはコンパイラとインタープリタの両方が必要なのですか?
Javaにはコンパイラーとインタープリターの両方が必要であるという事実を理解できます。ソースコードをバイトコードにコンパイルしてから、仮想マシン(Windows、Linux、Androidなど)がそのバイトコードを現在のアーキテクチャのマシンコードに変換します。 しかし、なぜPythonにはコンパイラとインタープリタの両方が必要なのでしょうか。Pythonはプラットフォームに依存しないため、解釈を使用しないのはなぜですか?私の知る限り、Pythonプログラム(バイトコードにコンパイルされたもの)を変更せずにWindowsまたはLinuxマシンで実行することはできません。それとも私は間違っていますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.