情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

OpCodes.Ldind_U1 フィールド

2013/12/12

unsigned int8 型の値を int32 として評価スタックに間接的に読み込みます。

Namespace:  System.Reflection.Emit
アセンブリ:  mscorlib (mscorlib.dll 内)

public static readonly OpCode Ldind_U1

命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。

形式

アセンブリ形式

説明

47

ldind.u1

アドレス addrunsigned int8 値を int32 としてスタックに読み込みます。

スタックの遷移動作を順番に示すと、次のようになります。

  1. アドレスがスタックにプッシュされます。

  2. アドレスがスタックからポップされ、そのアドレスにある値がフェッチされます。

  3. フェッチされた値がスタックにプッシュされます。

ldind.u1 命令は、指定したアドレス (native int&、または * のいずれかの型) から unsigned int8 値を int32 としてスタックに間接的に読み込みます。

すべての ldind 命令は、対応している組み込み値クラスを指定する Ldobj 命令のショートカットです。

4 バイト未満の整数値は、評価スタックに読み込まれるときに、native int ではなく、int32 に拡張されます。浮動小数点値は、評価スタックに読み込まれるときに、F 型に変換されます。

正しい形式の MSIL を使用すると、ldind 命令はポインターの型と矛盾しない方法で使用されます。

最初にスタックにプッシュされるアドレスをコンピューターのオブジェクトの通常サイズに合わせて配置する必要があります。このようにしないと NullReferenceException が発生することがあります。これを予防する方法については、Unaligned プレフィックス命令のトピックを参照してください。アドレス (LdlocaLdarga など) を返す MSIL 命令の結果が安全に配置されます。1 バイトよりサイズが大きいデータ型の場合、バイト順はターゲット CPU に依存します。バイト順に依存するコードは、一部のプラットフォームでは実行されないことがあります。

無効なアドレスが検出されると、NullReferenceException がスローされることがあります。

ldind.u1 オペコードを使用できる Emit メソッド オーバーロードを次に示します。

  • ILGenerator.Emit(OpCode)

Windows Phone OS

サポート: 8.0, 7.1

表示: