ホームページ >バックエンド開発 >C#.Net チュートリアル >.NET Framework 中間言語 IL 命令集
IL は、.NET Framework の Intermediate Language の略称です。 .NET Framework が提供するコンパイラを使用すると、ソース プログラムを .exe または .dll ファイルに直接コンパイルできますが、このときコンパイルされたプログラム コードは CPU で直接実行できるマシンコードではなく、中間言語 IL (Intermediate Language) コード。
名前 | 説明 |
Add | 2 つの値を加算し、結果を計算スタックにプッシュします。 |
Add.Ovf | 2 つの整数を加算し、オーバーフロー チェックを実行し、結果を計算スタックにプッシュします。 |
Add.Ovf.Un | 2 つの符号なし整数値を加算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
And | 2 つの値のビットごとの AND を計算し、結果を評価スタックにプッシュします。 |
Arglist | 現在のメソッドの引数リストへのアンマネージ ポインターを返します。 |
Beq | 2つの値が等しい場合、制御をターゲット命令に移します。 |
Beq.S | 2 つの値が等しい場合、制御をターゲット命令 (短い形式) に転送します。 |
Bge | 最初の値が 2 番目の値以上の場合、制御をターゲット命令に移します。 |
Bge.S | 最初の値が 2 番目の値以上の場合、制御をターゲット命令 (短い形式) に転送します。 |
Bge.Un | 符号なし整数値またはソート不可能な浮動小数点値を比較する場合、最初の値が 2 番目の値より大きい場合、制御はターゲット命令に移されます。 |
Bge.Un.S | 符号なし整数値またはソート不可能な浮動小数点数を比較する場合、最初の値が 2 番目の値より大きい場合、制御はターゲット命令 (短い形式) に転送されます。 |
Bgt | 最初の値が 2 番目の値より大きい場合、制御をターゲット命令に転送します。 |
Bgt.S | 最初の値が 2 番目の値より大きい場合、制御をターゲット命令 (短い形式) に転送します。 |
Bgt.Un | 符号なし整数値またはソート不可能な浮動小数点値を比較する場合、最初の値が 2 番目の値より大きい場合、制御はターゲット命令に移されます。 |
Bgt.Un.S | 符号なし整数値またはソート不可能な浮動小数点数を比較する場合、最初の値が 2 番目の値より大きい場合、制御はターゲット命令 (短い形式) に転送されます。 |
Ble | 最初の値が 2 番目の値以下の場合、制御をターゲット命令に転送します。 |
Ble.S | 最初の値が 2 番目の値以下の場合、制御をターゲット命令 (短い形式) に転送します。 |
Ble.Un | 符号なし整数値またはソート不可能な浮動小数点値を比較する場合、最初の値が 2 番目の値以下の場合、制御はターゲット命令に移されます。 |
Ble.Un.S | 符号なし整数値またはソート不可能な浮動小数点値を比較する場合、最初の値が 2 番目の値以下の場合、制御をターゲット命令 (短縮形) に転送します。 |
Blt | 最初の値が 2 番目の値より小さい場合、制御をターゲット命令に転送します。 |
Blt.S | 最初の値が 2 番目の値より小さい場合、制御をターゲット命令 (短い形式) に転送します。 |
Blt.Un | 符号なし整数値またはソート不可能な浮動小数点値を比較する場合、最初の値が 2 番目の値より小さい場合、制御はターゲット命令に移されます。 |
Blt.Un.S | 符号なし整数値またはソート不可能な浮動小数点値を比較する場合、最初の値が 2 番目の値より小さい場合、制御をターゲット命令 (短い形式) に転送します。 |
Bne.Un | 2 つの符号なし整数値またはソート不可能な浮動小数点値が等しくない場合、制御をターゲット命令に移します。 |
Bne.Un.S | 2 つの符号なし整数値またはソート不可能な浮動小数点値が等しくない場合に、制御をターゲット命令 (短い形式) に転送します。 |
Box | 値クラスをオブジェクト参照(O型)に変換します。 |
Br | 無条件にターゲット命令に制御を移します。 |
Br.S | 無条件にターゲット命令に制御を移します (短い形式)。 |
Break | 共通言語構造 (CLI) に信号を送り、ブレークポイントに到達したことをデバッガーに通知します。 |
Brfalse | 値が false の場合、null 参照 (Visual Basic では Nothing)、またはゼロは、ターゲット命令に制御を移します。 |
Brfalse.S | 値が false、null 参照、または 0 の場合、制御をターゲット命令に転送します。 |
Brtrue | 値が true、null 以外、または 0 以外の場合、制御をターゲット命令に転送します。 |
Brtrue.S | 値が true、null 以外、または 0 以外の場合、制御をターゲット命令 (短い形式) に転送します。 |
Call | 渡されたメソッド指定子で示されたメソッドを呼び出します。 |
Calli | 呼び出し規約で記述されたパラメータを使用して、計算スタック上に示されたメソッドを (エントリ ポイントへのポインタとして) 呼び出します。 |
Callvirt | オブジェクトの遅延バインディング メソッドを呼び出し、戻り値を計算スタックにプッシュします。 |
Castclass | 参照によって渡されたオブジェクトを指定されたクラスにキャストしようとします。 |
Ceq | 2 つの値を比較します。 2 つの値が等しい場合は、整数値 1 (int32) が評価スタックにプッシュされ、そうでない場合は 0 (int32) が評価スタックにプッシュされます。 |
Cgt | 2 つの値を比較します。最初の値が 2 番目の値より大きい場合は、整数値 1 (int32) が評価スタックにプッシュされ、それ以外の場合は 0 (int32) が評価スタックにプッシュされます。 |
Cgt.Un | 2 つの符号なしまたは並べ替え不可能な値を比較します。最初の値が 2 番目の値より大きい場合は、整数値 1 (int32) が評価スタックにプッシュされ、それ以外の場合は 0 (int32) が評価スタックにプッシュされます。 |
Ckfinite | 値が有限数でない場合は、ArithmeticException をスローします。 |
Clt | 2 つの値を比較します。最初の値が 2 番目の値より小さい場合は、整数値 1 (int32) が評価スタックにプッシュされ、そうでない場合は 0 (int32) が評価スタックにプッシュされます。 |
Clt.Un | 符号なしまたは並べ替え不可能な値value1とvalue2を比較します。 value1 が value2 より小さい場合、整数値 1 (int32) が評価スタックにプッシュされ、それ以外の場合、0 (int32) が評価スタックにプッシュされます。 |
Constrained | 仮想メソッド呼び出しが行われる型を制約します。 |
Conv.I | 計算スタックの最上位の値をネイティブ int に変換します。 |
Conv.I1 | 計算スタックの先頭の値を int8 に変換し、それを int32 に拡張 (パディング) します。 |
Conv.I2 | 計算スタックの先頭の値を int16 に変換し、それを int32 に拡張 (パディング) します。 |
Conv.I4 | 計算スタックの先頭の値を int32 に変換します。 |
Conv.I8 | 計算スタックの先頭の値を int64 に変換します。 |
Conv.Ovf.I | 評価スタックの最上位にある符号付き値を符号付きネイティブ int に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I.Un | 評価スタックの最上位にある符号なしの値を符号付きネイティブ int に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I1 | 評価スタックの先頭にある符号付き値を符号付き int8 に変換し、それを int32 に拡張し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I1.Un | 評価スタックの最上位にある unsigned 値を signed int8 に変換し、それを int32 に拡張し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I2 | 評価スタックの先頭にある符号付き値を符号付き int16 に変換し、それを int32 に拡張し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I2.Un | 評価スタックの先頭にある符号なしの値を符号付き int16 に変換し、それを int32 に拡張し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I4 | 評価スタックの先頭にある符号付き値を符号付き int32 に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I4.Un | 評価スタックの最上位にある符号なしの値を符号付き int32 に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I8 | 評価スタックの先頭にある符号付き値を符号付き int64 に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.I8.Un | 評価スタックの先頭にある符号なしの値を符号付き int64 に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U | 計算スタックの先頭にある符号付き値を符号なしネイティブ int に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U.Un | 評価スタックの最上位にある符号なし値を符号なしネイティブ int に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U1 | 評価スタックの先頭にある符号付き値を unsigned int8 に変換し、それを int32 に拡張し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U1.Un | 評価スタックの先頭にある unsigned 値を unsigned int8 に変換し、それを int32 に拡張し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U2 | 計算スタックの先頭にある符号付きの値を unsigned int16 に変換し、それを int32 に拡張し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U2.Un | 評価スタックの最上位にある unsigned 値を unsigned int16 に変換し、それを int32 に拡張し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U4 | 計算スタックの先頭にある符号付きの値を unsigned int32 に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U4.Un | 計算スタックの先頭にある unsigned 値を unsigned int32 に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U8 | 計算スタックの先頭にある符号付き値を unsigned int64 に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.Ovf.U8.Un | 計算スタックの先頭にある unsigned 値を unsigned int64 に変換し、オーバーフロー時に OverflowException をスローします。 |
Conv.R.Un | 計算スタックの先頭にある符号なし整数値を float32 に変換します。 |
Conv.R4 | 計算スタックの先頭の値を float32 に変換します。 |
Conv.R8 | 計算スタックの先頭の値を float64 に変換します。 |
Conv.U | 計算スタックの最上位の値を unsigned ネイティブ int に変換し、それをネイティブ int に展開します。 |
Conv.U1 | 計算スタックの先頭の値を unsigned int8 に変換し、それを int32 に拡張します。 |
Conv.U2 | 計算スタックの先頭の値を unsigned int16 に変換し、それを int32 に拡張します。 |
Conv.U4 | 計算スタックの先頭の値を unsigned int32 に変換し、それを int32 に拡張します。 |
Conv.U8 | 計算スタックの先頭の値を unsigned int64 に変換し、それを int64 に拡張します。 |
Cpblk | 指定されたバイト数をソースアドレスから宛先アドレスにコピーします。 |
Cpobj | オブジェクトのアドレス (&、* またはネイティブ int 型) にある値の型を、ターゲット オブジェクトのアドレス (&、* またはネイティブ int 型) にコピーします。 |
p | 2つの値を除算し、結果をfloat(F型)または商(int32型)として計算スタックにプッシュします。 |
p.Un | 2 つの符号なし整数値を除算し、結果 ( int32 ) を評価スタックにプッシュします。 |
Dup | 計算スタックの現在の最上位値をコピーし、そのコピーを計算スタックにプッシュします。 |
Endfilter | 制御を例外のフィルター句から共通言語構造 (CLI) 例外ハンドラーに戻します。 |
Endfinally | 例外ブロックの Fault 句または Finally 句から制御を共通言語構造 (CLI) 例外ハンドラーに戻します。 |
Initblk | 特定のアドレスにある指定されたメモリ ブロックを、指定されたサイズと初期値に初期化します。 |
Initobj | 指定されたアドレスにある値型の各フィールドを null 参照、または適切なプリミティブ型の場合は 0 に初期化します。 |
Isinst | オブジェクト参照 (O 型) が特定のクラスのインスタンスであるかどうかをテストします。 |
Jmp | 現在のメソッドを終了し、指定されたメソッドにジャンプします。 |
Ldarg | パラメータ(指定されたインデックス値によって参照される)をスタックにロードします。 |
Ldarg.0 | インデックス 0 のパラメーターを計算スタックにロードします。 |
Ldarg.1 | インデックス 1 のパラメーターを計算スタックにロードします。 |
Ldarg.2 | インデックス 2 のパラメーターを計算スタックにロードします。 |
Ldarg.3 | インデックス 3 のパラメーターを計算スタックにロードします。 |
Ldarg.S | 引数 (指定された短縮形式のインデックスによって参照される) を評価スタックにロードします。 |
Ldarga | は、パラメータアドレスを計算スタックにロードします。 |
Ldarga.S | パラメータアドレスを短い形式で計算スタックにロードします。 |
Ldc.I4 | 提供された int32 型の値を int32 として評価スタックにプッシュします。 |
Ldc.I4.0 | 整数値 0 を int32 として計算スタックにプッシュします。 |
Ldc.I4.1 | 整数値 1 を int32 として評価スタックにプッシュします。 |
Ldc.I4.2 | 整数値 2 を int32 として評価スタックにプッシュします。 |
Ldc.I4.3 | 整数値 3 を int32 として評価スタックにプッシュします。 |
Ldc.I4.4 | 整数値 4 を int32 として評価スタックにプッシュします。 |
Ldc.I4.5 | 整数値 5 を int32 として計算スタックにプッシュします。 |
Ldc.I4.6 | 整数値 6 を int32 として計算スタックにプッシュします。 |
Ldc.I4.7 | 整数値 7 を int32 として評価スタックにプッシュします。 |
Ldc.I4.8 | 整数値 8 を int32 として計算スタックにプッシュします。 |
Ldc.I4.M1 | 整数値 -1 を int32 として計算スタックにプッシュします。 |
Ldc.I4.S | 提供された int8 値を int32 (短い形式) として計算スタックにプッシュします。 |
Ldc.I8 | 提供された int64 型の値を int64 として評価スタックにプッシュします。 |
Ldc.R4 | 提供された float32 型の値を F (float) 型として評価スタックにプッシュします。 |
Ldc.R8 | float64 型の提供された値を F (float) 型として評価スタックにプッシュします。 |
Ldelem | ディレクティブで指定された型に従って、指定された配列インデックスにある要素を計算スタックの先頭にロードします。 |
Ldelem.I | 指定された配列インデックスにあるネイティブ int 型の要素を、評価スタックの最上位にネイティブ int としてロードします。 |
Ldelem.I1 | 指定された配列インデックスにある int8 型の要素を、評価スタックの先頭に int32 としてロードします。 |
Ldelem.I2 | 指定された配列インデックスにある int16 型の要素を、評価スタックの最上位に int32 としてロードします。 |
Ldelem.I4 | 指定された配列インデックスにある int32 型の要素を、評価スタックの最上位に int32 としてロードします。 |
Ldelem.I8 | 指定された配列インデックスにある int64 型の要素を、評価スタックの最上位に int64 としてロードします。 |
Ldelem.R4 | 指定された配列インデックスにあるタイプ float32 の要素を、タイプ F (float) として評価スタックの最上位にロードします。 |
Ldelem.R8 | 指定された配列インデックスにあるタイプ float64 の要素を、タイプ F (float) として評価スタックの最上位にロードします。 |
Ldelem.Ref | 指定された配列インデックスにあるオブジェクト参照を含む要素を、O 型 (オブジェクト参照) として評価スタックの最上位にロードします。 |
Ldelem.U1 | 指定された配列インデックスにある unsigned int8 型の要素を、評価スタックの先頭に int32 としてロードします。 |
Ldelem.U2 | 指定された配列インデックスにある unsigned int16 型の要素を、評価スタックの最上位に int32 としてロードします。 |
Ldelem.U4 | 指定された配列インデックスにある unsigned int32 型の要素を、評価スタックの先頭に int32 としてロードします。 |
Ldelema | 指定された配列インデックスにある配列要素のアドレスを、評価スタックの先頭に & 型 (マネージド ポインター) としてロードします。 |
Ldfld | 参照が現在計算スタック上にあるオブジェクト内のフィールドの値を検索します。 |
Ldflda | 参照が現在計算スタック上にあるオブジェクト内のフィールドのアドレスを検索します。 |
Ldftn | 特定のメソッドを実装するネイティブ コードを指すアンマネージ ポインター (ネイティブ int 型) を計算スタックにプッシュします。 |
Ldind.I | ネイティブ int 型の値をネイティブ int として計算スタックに間接的にロードします。 |
Ldind.I1 | int8 型の値を int32 として計算スタックに間接的にロードします。 |
Ldind.I2 | int16 型の値を int32 として計算スタックに間接的にロードします。 |
Ldind.I4 | int32 型の値を int32 として計算スタックに間接的にロードします。 |
Ldind.I8 | int64 型の値を int64 間接として計算スタックにロードします。 |
Ldind.R4 | float32 値を F (float) 型として計算スタックに間接的にロードします。 |
Ldind.R8 | float64 値を F (float) 型として計算スタックに間接的にロードします。 |
Ldind.Ref | は、オブジェクト参照を O (オブジェクト参照) 型として計算スタックに間接的に読み込みます。 |
Ldind.U1 | unsigned int8 型の値を int32 として計算スタックに間接的にロードします。 |
Ldind.U2 | unsigned int16 型の値を int32 として計算スタックに間接的にロードします。 |
Ldind.U4 | unsigned int32 型の値を int32 として計算スタックに間接的にロードします。 |
Ldlen | ゼロベースの 1 次元配列の要素の数を計算スタックにプッシュします。 |
Ldloc | 指定されたインデックスにあるローカル変数を評価スタックにロードします。 |
Ldloc.0 | インデックス 0 のローカル変数を評価スタックにロードします。 |
Ldloc.1 | インデックス 1 のローカル変数を評価スタックにロードします。 |
Ldloc.2 | インデックス 2 のローカル変数を評価スタックにロードします。 |
Ldloc.3 | インデックス 3 のローカル変数を評価スタックにロードします。 |
Ldloc.S | 特定のインデックスにあるローカル変数を評価スタックにロードします (短い形式)。 |
Ldloca | は、特定のインデックスにあるローカル変数のアドレスを評価スタックにロードします。 |
Ldloca.S | 特定のインデックスにあるローカル変数のアドレスを評価スタックにロードします (短い形式)。 |
Ldnull | null 参照 (O 型) を計算スタックにプッシュします。 |
Ldobj | アドレスが指す値型オブジェクトを計算スタックの先頭にコピーします。 |
Ldsfld | 静的フィールドの値を計算スタックにプッシュします。 |
Ldsflda | 静的フィールドのアドレスを計算スタックにプッシュします。 |
Ldstr | メタデータに格納されている文字列への新しいオブジェクト参照をプッシュします。 |
Ldtoken | メタデータ トークンをランタイム表現に変換し、コンピューティング スタックにプッシュします。 |
Ldvirtftn | 指定されたオブジェクトに関連付けられた特定の仮想メソッドを実装するネイティブ コードへのアンマネージ ポインター (ネイティブ int 型) を評価スタックにプッシュします。 |
Leave | 保護されたコード領域を終了し、無条件に特定のターゲット命令に制御を移します。 |
Leave.S | 保護されたコード領域を出て、無条件に制御をターゲット命令(短縮形)に移します。 |
Localloc | ローカル動的メモリプールから特定のバイト数を割り当て、最初に割り当てられたバイトのアドレス (一時ポインタ、タイプ *) を計算スタックにプッシュします。 |
Mkrefany | 特定の型のインスタンスへの型付き参照を計算スタックにプッシュします。 |
Mul | 2 つの値を乗算し、結果を計算スタックにプッシュします。 |
Mul.Ovf | 2 つの整数値を乗算し、オーバーフロー チェックを実行し、結果を計算スタックにプッシュします。 |
Mul.Ovf.Un | 2 つの符号なし整数値を乗算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
Neg | 値の否定を実行し、結果を計算スタックにプッシュします。 |
Newarr | 要素が特定の型である新しい 0 から始まる 1 次元配列へのオブジェクト参照を評価スタックにプッシュします。 |
Newobj | 新しいオブジェクトまたは値型の新しいインスタンスを作成し、(O 型の) オブジェクト参照を計算スタックにプッシュします。 |
いいえ | オペコードをパッチする場合はスペースを埋めます。処理サイクルは消費されますが、意味のある操作は実行されません。 |
Not | スタックの先頭にある整数値のビット単位の補数を計算し、結果を同じ型として計算スタックにプッシュします。 |
Or | スタックの先頭にある 2 つの整数値のビット単位の補数を計算し、結果を評価スタックにプッシュします。 |
Pop | 現在計算スタックの一番上にある値を削除します。 |
Prefix1 | インフラストラクチャ。このコマンドは予約されています。 |
Prefix2 | インフラストラクチャ。このコマンドは予約されています。 |
Prefix3 | インフラストラクチャ。このコマンドは予約されています。 |
Prefix4 | インフラストラクチャ。このコマンドは予約されています。 |
Prefix5 | インフラストラクチャ。このコマンドは予約されています。 |
Prefix6 | インフラストラクチャ。このコマンドは予約されています。 |
Prefix7 | インフラストラクチャ。このコマンドは予約されています。 |
Prefixref | インフラストラクチャ。このコマンドは予約されています。 |
Readonly | 後続の配列アドレス操作が実行時に型チェックを実行せず、変更可能性が制限されたマネージド ポインターを返すことを指定します。 |
Refanytype | 型付き参照内に埋め込まれた型タグを取得します。 |
Refanyval | 型付き参照内に埋め込まれたアドレス (および型) を取得します。 |
Rem | 2 つの値を除算し、余りを計算スタックにプッシュします。 |
Rem.Un | 2 つの符号なしの値を除算し、余りを計算スタックにプッシュします。 |
Ret | 現在のメソッドから戻り、戻り値 (存在する場合) を呼び出し元の計算スタックから呼び出し先の計算スタックにプッシュします。 |
Rethrow | 現在の例外を再度スローします。 |
Shl | 整数値を指定された桁数だけ左にシフトし (ゼロを埋め込み)、結果を評価スタックにプッシュします。 |
Shr | 整数値を指定された桁数だけ右にシフトし (符号を保持し)、結果を評価スタックにプッシュします。 |
Shr.Un | 符号なし整数値を指定された桁数だけ右にシフトし (ゼロを埋め込み)、結果を評価スタックにプッシュします。 |
Sizeof | 指定された値の型のサイズ (バイト単位) を計算スタックにプッシュします。 |
Starg | 計算スタックの先頭の値を、指定されたインデックスのパラメーター スロットに保存します。 |
Starg.S | パラメーター スロットの指定されたインデックスにある計算スタックの先頭にある値を格納します (短い形式)。 |
Stelem | 指定されたインデックスにある配列要素を、ディレクティブで指定された型の計算スタックの値に置き換えます。 |
Stelem.I | 指定されたインデックスにある配列要素を、計算スタック上のネイティブの int 値に置き換えます。 |
Stelem.I1 | 指定されたインデックスの配列要素を計算スタック上の int8 値に置き換えます。 |
Stelem.I2 | 指定されたインデックスにある配列要素を計算スタック上の int16 値に置き換えます。 |
Stelem.I4 | 指定されたインデックスの配列要素を計算スタック上の int32 値に置き換えます。 |
Stelem.I8 | 指定されたインデックスの配列要素を計算スタック上の int64 値に置き換えます。 |
Stelem.R4 | 指定されたインデックスにある配列要素を、計算スタック上の float32 値に置き換えます。 |
Stelem.R8 | 指定されたインデックスにある配列要素を計算スタック上の float64 値に置き換えます。 |
Stelem.Ref | 指定されたインデックスにある配列要素を、計算スタック上のオブジェクト ref 値 (O 型) に置き換えます。 |
Stfld | オブジェクト参照またはポインタのフィールドに格納されている値を新しい値に置き換えます。 |
Stind.I | ネイティブ int 型の値を指定されたアドレスに保存します。 |
Stind.I1 | int8 型の値を指定されたアドレスに格納します。 |
Stind.I2 | int16 型の値を指定されたアドレスに格納します。 |
Stind.I4 | int32 型の値を指定されたアドレスに格納します。 |
Stind.I8 | int64 型の値を指定されたアドレスに格納します。 |
Stind.R4 | float32 値を指定されたアドレスに格納します。 |
Stind.R8 | float64 値を指定されたアドレスに格納します。 |
Stind.Ref | は、指定されたアドレスにオブジェクト参照値を保存します。 |
Stloc | 計算スタックの先頭から現在の値をポップし、指定されたインデックスのローカル変数リストに格納します。 |
Stloc.0 | 現在の値を評価スタックの先頭からポップし、ローカル変数リストのインデックス 0 に格納します。 |
Stloc.1 | 現在の値を評価スタックの先頭からポップし、ローカル変数リストのインデックス 1 に格納します。 |
Stloc.2 | 評価スタックの先頭から現在の値をポップし、インデックス 2 のローカル変数リストに格納します。 |
Stloc.3 | 現在の値を評価スタックの先頭からポップし、ローカル変数リストのインデックス 3 に格納します。 |
Stloc.S | 現在の値を計算スタックの先頭からポップし、ローカル変数リスト (短い形式) のインデックスに格納します。 |
Stobj | 指定された型の値を評価スタックから指定されたメモリ アドレスにコピーします。 |
Stsfld | 静的フィールドの値を計算スタックの値に置き換えます。 |
Sub | 他の値から値を減算し、結果を計算スタックにプッシュします。 |
Sub.Ovf | 整数値を別の値から減算し、オーバーフロー チェックを実行し、結果を計算スタックにプッシュします。 |
Sub.Ovf.Un | 符号なし整数値を別の値から減算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
Switch | ジャンプテーブルを実装します。 |
Tailcall | 実際の呼び出し命令を実行する前に、サフィックス付きのメソッド呼び出し命令を実行して、現在のメソッドのスタック フレームを削除します。 |
Throw | 現在計算スタック上にある例外オブジェクトをスローします。 |
Unaligned | 現在評価スタック上にあるアドレスが、直後の ldind、stind、ldfld、stfld、ldobj、stobj、initblk、または cpblk 命令の自然なサイズと整列していない可能性があることを示します。 |
Unbox | 値型のボックス化表現をボックス化されていない形式に変換します。 |
Unbox.Any | ディレクティブ内の指定された型のボックス化表現をボックス化されていない形式に変換します。 |
Volatile | 現在計算スタックの最上位にあるアドレスが揮発性である可能性があり、その場所の読み取り結果をキャッシュしたり、そのアドレスへの複数のストアを非アクティブ化したりできないことを指定します。 |
Xor | 計算スタックの先頭にある 2 つの値のビットごとの XOR を計算し、結果を計算スタックにプッシュします。 |
概要
この記事では、IL 命令の詳細については説明せず、概要のみを示します。古いことわざに、「水を一口ずつ飲まなければなりません。道は一歩ずつ歩かなければなりません。」という言葉があります。少し短いので次の章があります。次回の記事でも、IL の基本的な説明をいくつか書いていきます。私自身の理解を組み合わせて、誰でも理解しやすいように、できるだけ平易に文章を書くように努めます。
上記は .NET Framework 中間言語 IL 命令の内容です。その他の関連内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。