1

返り値のない関数の呼び出し

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
// アセンブリマニフェスト
.assembly x {}
 
// エントリポイントとなる関数
.method static void main()
{
    // エントリポイントの宣言
    .entrypoint
 
    // 自作関数の呼び出し
    ldstr "numb" // 1つ目の引数をpush
    ldstr "angel" // 2つ目の引数をpush
    ldstr "boy" // 3つ目の引数をpush
    call void func1(string, string, string) // 関数の呼び出し // 返り値と引数の型を指定する
    //voidなので返り値の処理なし
 
    ret
}
 
// 引数の内容をコンソールに表示する関数
.method static void func1( string msg1, string msg2, string msg3)
{
    // 1つ目の引数の内容をコンソールに表示
    ldarg msg1 // 1つ目の引数をpush
    call void class [mscorlib]System.Console::WriteLine(string) // コンソールへの出力( mscorlib.dllに含まれるSystem.Consoleクラスの静的メンバ関数WriteLine()の呼び出し )
 
    // 2つ目の引数の内容をコンソールに表示
    ldarg msg2 // 2つ目の引数をpush
    call void class [mscorlib]System.Console::WriteLine(string) // コンソールへの出力( mscorlib.dllに含まれるSystem.Consoleクラスの静的メンバ関数WriteLine()の呼び出し )
 
    // 1つ目の引数の内容をコンソールに表示
    ldarg msg1 // 1つ目の引数をpush
    call void class [mscorlib]System.Console::WriteLine(string) // コンソールへの出力( mscorlib.dllに含まれるSystem.Consoleクラスの静的メンバ関数WriteLine()の呼び出し )
 
    // 3つ目の引数の内容をコンソールに表示
    ldarg msg3 // 3つ目の引数をpush
    call void class [mscorlib]System.Console::WriteLine(string) // コンソールへの出力( mscorlib.dllに含まれるSystem.Consoleクラスの静的メンバ関数WriteLine()の呼び出し )
 
    ret
}

実行結果:

numb
angel
numb
boy

C#では・・・

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 
-
|
!
 
 
-
|
|
|
|
!
void main()
{
    func1("numb","angel","boy");
}
 
void func1( string msg1, string msg2, string msg3 )
{
    System.Console.WriteLine( msg1 );
    System.Console.WriteLine( msg2 );
    System.Console.WriteLine( msg1 );
    System.Console.WriteLine( msg3 );
}

VB.NETでは・・・

  1
  2
  3
  4
  5
  6
  7
  8
  9
public sub main()
    func1("numb","angel","boy")
end sub
public sub func1( msg1 as string, msg2 as string, msg3 as string )
    System.Console.WriteLine( msg1 )
    System.Console.WriteLine( msg2 )
    System.Console.WriteLine( msg1 )
    System.Console.WriteLine( msg3 )
end sub




2

返り値のある関数の呼び出し

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
!
// アセンブリマニフェスト
.assembly x {}
 
// エントリポイントとなる関数
.method static void main()
{
    // エントリポイントの宣言
    .entrypoint
 
    // 自作関数の呼び出しと返り値のコンソールへの出力
    ldstr "in the door way" // 引数をpush
    call string func1( string ) // 関数の呼び出し // 返り値と引数の型を指定する
    call void class [mscorlib]System.Console::WriteLine(string) // コンソールへの出力( mscorlib.dllに含まれるSystem.Consoleクラスの静的メンバ関数WriteLine()の呼び出し )
 
    ret
}
 
// 引数をそのまま返す関数
.method static void func1( string msg1 )
{
    ldarg     msg1 // 1つ目の引数をpush
    ret
}

実行結果:

in the door way

C#では・・・

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 
-
|
!
 
 
-
|
!
void main()
{
    System.Console.WriteLine( func1( "in the door way" ) );
}
 
void func1( string msg1 )
{
    return msg1;
}

VB.NETでは・・・

  1
  2
  3
  4
  5
  6
  7
public sub main()
    System.Console.WriteLine( func1( "in the door way" ) )
end sub
 
public sub func1( msg1 as string )
    func1 = msg1
end sub

参照


トップ 編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード 新規 一覧 単語検索 最終更新 リンク元 ヘルプ 最終更新のRSS xenowire
Last-modified: Mon, 27 Jul 2009 03:06:22 JST