OpCodes.Ldind_I4 フィールド
int32 型の値を int32 として評価スタックに間接的に読み込みます。
Public Shared ReadOnly Ldind_I4 As OpCode
[C#]
public static readonly OpCode Ldind_I4;
[C++]
public: static OpCode Ldind_I4;
[JScript]
public static var Ldind_I4 : OpCode;
解説
命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。
形式 | アセンブリ形式 | 説明 |
---|---|---|
4A | ldind.i4 | アドレス addr の int32 値を int32 としてスタックに読み込みます。 |
スタックの遷移動作を順番に示すと、次のようになります。
- アドレスがスタックにプッシュされます。
- アドレスがスタックからポップされ、そのアドレスにある値がフェッチされます。
- フェッチされた値がスタックにプッシュされます。
ldind.i4 命令は、指定したアドレスの int32 値 (natural int 、 & 、または * の各型) を int32 としてスタックに間接的に読み込みます。
すべての ldind 命令は、対応している組み込み値クラスを指定する Ldobj 命令のショートカットです。
4 バイト未満の整数値は、評価スタックに読み込まれるときに、 natural int ではなく、 int32 に拡張されます。浮動小数点値は、評価スタックに読み込まれるときに、 F 型に変換されます。
正しい形式の MSIL (Microsoft Intermediate Language) を使用すると、 ldind 命令はポインタの型と矛盾しない方法で使用されます。
最初にスタックにプッシュされるアドレスをコンピュータのオブジェクトの通常サイズに合わせて配置する必要があります。このようにしないと NullReferenceException が発生することがあります。これを予防する方法については、 Unaligned プリフィックス命令のトピックを参照してください。アドレス (Ldloca 、 Ldarga など) を返す MSIL 命令の結果が安全に配置されます。1 バイトよりサイズが大きいデータ型の場合、バイト順はターゲット CPU に依存します。バイト順に依存するコードは、一部のプラットフォームでは実行されないことがあります。
無効なアドレスが検出されると、 NullReferenceException がスローされることがあります。
ldind.i4 オペコードを使用できる Emit コンストラクタ オーバーロードを次に示します。
- ILGenerator.Emit(OpCode)
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ