OpCodes.Calli フィールド
アセンブリ: mscorlib (mscorlib.dll 内)


命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。
-
メソッド引数の arg1 から argN まで、およびメソッド エントリ ポインタがスタックからポップされます。メソッドの呼び出しが実行されます。完了すると、呼び出し先メソッドによって戻り値が生成され、呼び出し元へ送られます。
calli 命令は、引数 arg1 から argN を使用して、メソッド エントリ ポインタを呼び出します。これらの引数の型は、特定の呼び出し規約 (callSiteDesc) に記述されています。calli 命令の直前に tail プリフィックス (Tailcall) を置くことによって、制御を転送する前に現在のメソッドの状態を解放するように指定できます。呼び出しによって、元のメソッドより信頼性の高いメソッドに制御が転送される場合、スタック フレームは解放されません。その代わりに、tail が提供されなかったかのように、実行が継続されます。
メソッド エントリ ポインタは、呼び出し規約 (スタンドアロン シグネチャのメタデータ トークン) によって記述されている引数を使用して正当に呼び出すことができる、ターゲット コンピュータのネイティブ コードへの固有のポインタであると見なされます。メソッド エントリ ポインタは、Ldftn 命令または Ldvirtftn 命令を使用して作成する場合も、ネイティブ コードから渡される場合もあります。
呼び出し規約は動的にはチェックされないため、指定した呼び出し規約を呼び出し先が使用していない場合、calli 命令を使用するコードは正しく動作しません。
引数は、スタック上に左から右に配置されます。つまり、まず最初の引数が計算されてスタックに配置され、次に 2 番目の引数、その次に 3 番目の引数が同様に配置され、最終的に必要なすべての引数が降順でスタックに配置されます。インスタンス メソッドまたは仮想メソッドの引数構築コード シーケンスは、ユーザーが参照できる引数の前に、そのインスタンス参照 (null 参照以外) をプッシュする必要があります。
システム セキュリティが呼び出し元に対して呼び出すメソッドへのアクセスを許可していない場合は、SecurityException がスローされることがあります。セキュリティ チェックは、実行時ではなく、MSIL (Microsoft Intermediate Language) 命令がネイティブ コードに変換されるときに発生する場合があります。
スタックの calli 命令を実行するために使用できる EmitCalli メソッドを次に示します。命令を直接スタックに配置するには、Emit クラスを使用するのではなく、次のメソッドを通じて calli を呼び出す必要があります。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からOpCodes.Calli フィールドを検索する場合は、下記のリンクをクリックしてください。

- OpCodes.Calli フィールドのページへのリンク