私は、Computer Organization を受講するまで、Java が移植可能である理由を常に理解していると思っていました。
これは、C プログラムの最初から最後までの私の解釈です。
C プログラム --> コンパイラ --> アセンブリ --> マシン コード --> ISA --> マイクロ アーキテクチャ (コンピュータが ISA を解釈する方法) --> 論理ゲート --> 回路 --> デバイス
コンパイラが ISA の知識を持っている必要がある場所。また、アセンブリとマシン コードは ISA によって異なります。
Java はそのままです: (JVM 内部): Java プログラム --> コンパイラ --> バイトコード
bytecode は JVM の ISA です。
したがって、JVMにはISA(バイトコード)を解釈するための独自のマイクロアーキテクチャもあると思います。
これは正確ですか?
したがって、全体的なサイクルは次のようになります: (JVM 内) Java プログラム --> バイトコード (ISA) --> JVM マイクロ アーキテクチャ --> ホスト ハードウェア
また、マイクロ アーキテクチャがプロセッサに実装されている場合、JVM はホストのプロセッサの 1 つを使用する必要がありますか?