今回は前回の経験を実際に生かす一歩目として、定数ロードについて詳しく学びましょう。
それではILの実行スタックに定数をロードしてみましょう。
.assembly hina{} .method public static void main(){ .entrypoint .maxstack 1 ldc.i4 123 //int32型の定数ロード call void [mscorlib]System.Console::WriteLine(int32) ldc.i8 123456 //int64型の定数ロード call void [mscorlib]System.Console::WriteLine(int64) ldc.r4 123.456 //float64型の定数ロード call void [mscorlib]System.Console::WriteLine(float32) ldc.r8 123456.789 //float64型の定数ロード call void [mscorlib]System.Console::WriteLine(float64) ret }
今回の命令は「ldc.i8」「ldc.r4」「ldc.r8」です。説明ははしょりますのであしからず。
IL命令ではint32の特定の値に限って短縮形の命令が用意されています。バイトコードの量を減らしたい時に活用すると良いでしょう。
詳細は定数ロードの命令一覧にあります。