[Atelier Blue アトリエブルー]Homeプログラミング IL(CIL,MSIL)>入力

入力

ILをやっているとまずは関数を見つける事をしなければいけないことに気付くと思います。そんなときは、VB.NetやC#を逆アセ、またはmsdnとにらめっこです。どなたか、ILのための開発環境知りませんか?

入力

そろそろこれをやらないと、つらいでしょう。というわけでソースコード。

.assembly extern mscorlib{}
.assembly input_test{}

.method public static void main() cil managed
{
    .entrypoint
    .maxstack 1
    call string [mscorlib]System.Console::ReadLine()
    call void [mscorlib]System.Console::WriteLine(string)
    ret
}

山彦みたいなものですね。ひたすら繰り返します。

数字に変換してみる

まあ、数字を扱えないとつらいんですよ。

.assembly extern mscorlib{}
.assembly input_test{}

.method public static void main() cil managed
{
    .entrypoint
    .maxstack 1
    call    string [mscorlib]System.Console::ReadLine()
    call    int32 [mscorlib]System.Convert::ToInt32(string)
    call    void [mscorlib]System.Console::WriteLine(int32)
    ret
}

変な値や、文字を入れるともれなく例外を出してくれます。ちゃんと例外キャッチした方が良さそうですね。

.assembly extern mscorlib{}
.assembly input_test{}

.method public static void main() cil managed
{
    .entrypoint
    .maxstack 1
    .locals(string str)
    call    string [mscorlib]System.Console::ReadLine()
    stloc.0
    .try{
        ldloc.0
        call    int32 [mscorlib]System.Convert::ToInt32(string)
        call    void [mscorlib]System.Console::WriteLine(int32)
        leave fin
    }catch[mscorlib]System.Object
    {
        pop
        ldstr "適切な範囲の数字をお願いいたします。"
        call    void [mscorlib]System.Console::WriteLine(string)
        leave fin
    }
    fin:
    ret
}

例外についてはまた後でやりましょう。一応上のでは例外キャッチしています。


ページの一番上へ
前のページへ一覧に戻る 次のページへ
初版2006-4-28
[Atelier Blue アトリエブルー]Homeプログラミング IL(CIL,MSIL)>入力