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は完了です。