1. 命令システムの説明
JVM 命令システムは、他のコンピュータ命令システムと非常によく似ています。同時に、Java 命令には、オペコードとオペランドという 2 つの部分も含まれます。オペコードは 8 ビットの 2 進数で、その後に必要に応じて長さが決定されるオペランドが続きます。オペレーション コードは命令操作の性質を指定するために使用されます (ここではアセンブリ シンボルの形式で説明します)。たとえば、iload はメモリから整数をロードすることを意味し、anewarray は新しい配列にスペースを割り当てることを意味し、iand は2 つの整数の「AND」。 ,ret は、メソッドの呼び出しから返されるプロセス制御を表します。長さが 8 ビットを超える場合、オペランドは複数のバイトに分割されて格納されます。この状況に対して、JVM は「バイジェンディアン」エンコード方式を採用します。つまり、上位ビットが下位バイトに配置されます。この状況は、Motorola や RISCCPU で使用されるエンコード方式と同じですが、Intel で使用される「リトルエンディアン」エンコード方式、つまり、下位ビットが下位バイトを格納するものとは異なります。
Java コマンド システムは Java 言語を実装するために設計されており、メソッドの呼び出しと複数の優先順位のシステムを監視するための命令が含まれています。 JVM の 8 ビット オペコードの長さにより、JVM の命令数は最大 256 になり、現在では 160 を超える命令が使用されています。
2. 一般的に使用されるレジスタ
すべての CPU には、システムのステータスとプロセッサが必要とする情報を保存するために使用されるレジスタ グループが含まれています。仮想マシンがより多くのレジスタを定義すると、スタックやメモリにアクセスせずにレジスタからより多くの情報を取得できるため、実行速度の向上に役立ちます。ただし、仮想マシン内のレジスタの数が実際の CPU の数を超える場合、仮想マシンの実装時にコンベンショナル メモリを使用してレジスタをシミュレートするために大量のプロセッサ時間が費やされ、実際には仮想マシンの効率が低下します。 。このため、JVM は最もよく使用される 4 つのレジスタのみを設定します。
(1) PC プログラム カウンタ
(2) optop オペランド スタック トップ ポインタ
(3) フレーム 現在の実行環境ポインタ
( 4) vars は、現在の実行環境の最初のローカル変数へのポインタを指します。
すべてのレジスタは 32 ビットです。 PC はプログラムの実行を記録するために使用されます。 optop、frame、vars は、Java スタック領域へのポインタを記録するために使用されます。
Java の基本データ型は次のように分類されます:
1. 整数型。整数のデータ型を表すために使用されます。
2. 浮動小数点型、小数を表すために使用されるデータ型。
3. 文字型. 文字型のキーワードは「char」です。
4. ブール型は論理値を表す基本的なデータ型です。
以上がJavaにおけるJVM命令システムの概念とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。