オペランドスタック
オペランドスタックとはJava仮想マシンで定義されているメモリ内の領域の1つ。
スレッドごとに作られる仮想マシンスタック(オペランドスタックとは別のもの)に、フレームと呼ばれる小分けされた領域がある。 オペランドスタックは、そのフレーム内の領域の種類の1つである。特殊なスタックである。
オペランドスタックは仮想マシンの機械語の命令(バイトコード)から直接使用される。Java仮想マシンはスタックマシンであり、レジスタが無いため、オペランドスタックを作業領域に使って計算などを実行する。例えば、ローカル変数の int の値を2つ iload命令でオペランドスタックにプッシュし、iadd命令でその2つをポップし、加算する、というような使い方がされる。
オペランドスタック1つの領域サイズは32ビットで、long 型と double 型だけは2つ分のサイズ(64ビット)を使用する。
Javaクラスファイルのロード時チェックにより、オペランドスタックに積まれた時の型以外の使用をすること(float でプッシュした値を int として使用するなど)は一部の命令を除き禁止されている。