オペランドスタック

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