概要

関数にジャンプ(分岐)します。
ジャンプ先の関数でretをしてもジャンプ元の関数には戻ってきません。

書式

グローバル関数

jmp <関数の戻り値の型> <関数名>()

クラスの静的メンバ関数

jmp <関数の戻り値の型> [<ライブラリ名、名前空間名など>]<クラス名>::<関数名>()

クラスのメンバ関数

jmp instance <関数の戻り値の型> [<ライブラリ名、名前空間名など>]<クラス名>::<関数名>()


すべてを展開すべてを収束
  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
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
 
 
-
|
|
|
|
|
!
//アセンブリマニフェスト
.assembly test{}
 
// エントリポイントとなる関数
.method static void main()
{
    .entrypoint
 
    // 標準出力に文字列"She "を出力
    ldstr "She " // 文字列"She "をスタックにpush
    call void class [mscorlib]System.Console::WriteLine( string ) // スタックからpopして標準出力に出力
 
    // 関数abuse()にジャンプ(戻ってこない)
    jmp void abuse()
 
    // 標準出力に文字列", and didn't come back"を出力
    // (実行されない)
    ldstr ", and didn't come back" // 文字列", and didn't come back"をスタックにpush
    call void class [mscorlib]System.Console::WriteLine( string ) // スタックからpopして標準出力に出力
    
    ret
}
 
.method static void abuse()
{
    // 標準出力に"tripped"を出力
    ldstr "tripped" // 文字列"tripped"をスタックにpush
    call void class [mscorlib]System.Console::WriteLine( string ) // スタックからpopして標準出力に出力
    
    ret
}

実行結果:

She
tripped

C#では・・・

表現できません;

VB.NETでは・・・

表現できません;

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