そろそろ、クラスを扱ってみましょう。
.assembly extern mscorlib{} .assembly rand{} .method public static void main() cil managed { .entrypoint .maxstack 2 .locals init (class [mscorlib]System.Random V_0) newobj instance void [mscorlib]System.Random::.ctor() stloc.0 ldloc.0 ldc.i4.s 10 callvirt instance int32 [mscorlib]System.Random::Next(int32) call void [mscorlib]System.Console::WriteLine(int32) ldloc.0 ldc.i4.s 20 callvirt instance int32 [mscorlib]System.Random::Next(int32) call void [mscorlib]System.Console::WriteLine(int32) ret }
ローカル変数では、初期化を行ってもらうことが出来ます。「init」を付ければ、全部初期化してもらえます。覚えておきましょう
「newobj」で作れます。作ると、スタックの一番上にオブジェクトが返ってきます。
今回は、二度ほど利用するので一回変数へストックしています。
メンバの呼び出しは、次の手順で行います。
非常に申し訳ないのですが、今回は「call」ではなく「callvirt」を使っています。これは、実行時に呼び出すメソッドを決定するというものです。とりあえず、callと同じように使えます。
意外と簡単に出来てしまいました。補足説明は無しです。