そろそろ、クラスを扱ってみましょう。
.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と同じように使えます。
意外と簡単に出来てしまいました。補足説明は無しです。