オペランド スタック (オペランド スタック) は、操作スタックとも呼ばれ、後入れ先出し (LIFO) スタックです。メソッドおよびバイトコード命令の実行により、定数または変数がローカル変数テーブルまたはオブジェクト インスタンスのフィールドからコピーされてオペランド スタックに書き込まれ、スタック内の要素が計算としてローカル変数テーブルにポップされます。続行するか、メソッドの呼び出し元に戻ります。つまり、ポップ/プル操作です。
次のコードによるオペレーター ステーションの実行を示します。
public class StackDemo2 {
public static void main(String[] args) {
int i = 1;
int j = 2;
int z = i + j;
}
}
プログラムの実行中
- 1): プログラム カウンタは、ポインタを実行するために対応するオフセットを見つけます。
- 2): プログラムが初めて実行され、0 番目のアドレスが検索されます (0 はプログラム カウンタによって取得されます)。
- 3): プログラム カウンタが最初の位置 0 を取得したら、対応する最初の保存コマンドを取得する必要があります。
- 4): (int i =1) オペランドスタックに「1」が定義されています
-
- : a-offset は下がり続けます (1 がカウンターに再割り当てされます)。
b- 2回目の退避命令(オペランドスタックの1をローカル変数テーブルにコピーする処理)を実行します。
-
6): 次にポインタは下がり続けますので、上記1~5の処理を繰り返します(int j=2)
-
7): ローカル変数テーブルの 1 がオペランド スタックにロードされます。
-
8): ローカル変数テーブルの 2 がオペランド スタックにロードされます。
-
9): add i + j = 3 を実行します。
-
10): オペランドスタックを追加した後の結果 3 をローカル変数テーブルに保存します。
-
11): 戻る