Javaバイトコード
各バイトは256個の値を持ちうるので、256個のオペコードが可能である。これらのうち、0x00から0xca、0xfe、0xffが割り当てられた値である。0xcaはデバッガ用のブレイクポイント命令として予約されており、この言語は利用しない。同様に、0xfeおよび0xffはこの言語により使用されず、仮想マシンの内部利用のために予約されている。
命令はいくつかの大まかな分類に分けられる:
ロードおよびストア(例 aload_0,istore)
算術および論理(例 ladd,fcmpl)
型変換(例 i2b,d2i)
オブジェクト作成および操作(new,putfield)
オペランドスタック管理(例 swap,dup2)
制御の移動(例 ifeq,goto)
メソッド呼び出しおよび復帰(例 invokespecial,areturn)
例外を投げたり同期を行うなどのように、多くのより専門化されたタスクのための命令もいくつか存在する。
多くの命令は、扱うオペランドの型を示す接頭辞や接尾辞を持つ。これらは以下の通り:
以下のJavaコードを考えよう:
上記がメソッド内に置かれていると仮定すると、Javaコンパイラは上記のJavaコードを以下のように翻訳するだろう: