OpCodes.Ldind_I8 フィールド

定義

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

public: static initonly System::Reflection::Emit::OpCode Ldind_I8;
public static readonly System.Reflection.Emit.OpCode Ldind_I8;
 staticval mutable Ldind_I8 : System.Reflection.Emit.OpCode
Public Shared ReadOnly Ldind_I8 As OpCode 

フィールド値

OpCode

注釈

次の表に、命令の 16 進数およびMicrosoft中間言語 (MSIL) アセンブリ形式と、簡単なリファレンス概要を示します。

形式 アセンブリ形式 説明
4C ldind.i8 アドレスaddrの値を int64 としてint64スタックに読み込みます。

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

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

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

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

命令はldind.i8、指定されたアドレス (型 native int&、または *) から 値を としてスタックint64に間接的に読み込みますint64

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

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

正しい形式Microsoft中間言語 (MSIL) により、ポインターのldind型と一致する方法で命令が使用されます。

最初にスタックにプッシュされたアドレスは、マシン上のオブジェクトの自然なサイズに合わせる必要があります。または NullReferenceException 、 が発生する可能性があります (予防措置については、プレフィックス命令を参照してください Unaligned )。 アドレス (や など) を返すすべての MSIL 命令の結果は、 LdlocaLdarga安全に調整されます。 1 バイトを超えるデータ型の場合、バイト順序はターゲット CPU に依存します。 バイト順序に依存するコードは、すべてのプラットフォームで実行されない場合があります。

NullReferenceException は、無効なアドレスが検出された場合にスローされる可能性があります。

Emit のメソッド オーバーロードでは、オペコードを ldind.i8 使用できます。

適用対象