[Atelier Blue アトリエブルー]Homeプログラミング IL(CIL,MSIL)>インスタンスを作ってみる

インスタンスを作ってみる

そろそろ、クラスを扱ってみましょう。

ソースコード

.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」で作れます。作ると、スタックの一番上にオブジェクトが返ってきます。

今回は、二度ほど利用するので一回変数へストックしています。

メンバの呼び出し

メンバの呼び出しは、次の手順で行います。

  1. インスタンスをプッシュ
  2. 引数をプッシュ
  3. call

非常に申し訳ないのですが、今回は「call」ではなく「callvirt」を使っています。これは、実行時に呼び出すメソッドを決定するというものです。とりあえず、callと同じように使えます。

その他

意外と簡単に出来てしまいました。補足説明は無しです。


ページの一番上へ
前のページへ一覧に戻る 次のページへ
初版2006-5-23
[Atelier Blue アトリエブルー]Homeプログラミング IL(CIL,MSIL)>インスタンスを作ってみる