JVMで動作するプログラミング言語を作るにはどうしたらよいのだろう?(3)

aconst_nullはおそらく、nullをスタックマシンにpushする命令でしょう。
ってことで、nullを返す

class a {
	String n() { return null; }
}

こんな、プログラムを作ってみます。
で、ディスアセンブルしてみると、

aconst_null
areturn

となってます。正解ですね。
さて、nopという命令は名前からしてなにもしない命令でしょう。
nopを追加して実行してみます。

.method                  n()Ljava/lang/String;
   .limit stack          1
   .limit locals         1
   .line                 2
   nop
   aconst_null           
   areturn               
.end method              

こんなかんじ。サイズは1バイトだけ大きくなってるので間違いないです。
243バイトが244バイトになっています。

次のiconst_m1は、マイナス1をpushする命令です。mはマイナスのmなんですね。
というわけで、0x00から0x02までのコードを今日は見ました。
昨日は0x03〜0x12まで見たので0x00から0x12まではわかったことになります。大体10分の1は完了です。