OpCodes.Ldind_I8 OpCodes.Ldind_I8 OpCodes.Ldind_I8 OpCodes.Ldind_I8 Field


int64 型の値を int64 として評価スタックに間接的に読み込みます。Loads a value of type int64 as an int64 onto the evaluation stack indirectly.

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 



次の表は、命令の16進形式と Microsoft 中間言語 (MSIL) のアセンブリ形式と、簡単なリファレンスの概要を示しています。The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

形式Format アセンブリ形式Assembly Format 説明Description
4C4C ldind.i8ldind.i8 アドレス addr の @no__t 0 の値を int64 としてスタックに読み込みます。Loads the int64 value at address addr onto the stack as an int64.

スタックの移行動作は、次の順序で実行されます。The stack transitional behavior, in sequential order, is:

  1. アドレスがスタックにプッシュされます。An address is pushed onto the stack.

  2. アドレスはスタックからポップされます。アドレスにある値がフェッチされます。The address is popped from the stack; the value located at the address is fetched.

  3. フェッチされた値はスタックにプッシュされます。The fetched value is pushed onto the stack.

@No__t-0 命令は、指定されたアドレス (native int&、または *) から int64 の値を @no__t としてスタックに間接的に読み込みます。The ldind.i8 instruction indirectly loads an int64 value from the specified address (of type native int, &, or *) onto the stack as an int64.

@No__t-0 のすべての命令は、対応する組み込み値クラスを指定する Ldobj 命令のショートカットです。All of the ldind instructions are shortcuts for a Ldobj instruction that specifies the corresponding built-in value class.

4バイト未満の整数値は、評価スタックに読み込まれるときに int32 (native int ではない) に拡張されることに注意してください。Note that integer values of less than 4 bytes are extended to int32 (not native int) when they are loaded onto the evaluation stack. 浮動小数点値は、評価スタックに読み込まれるときに F 型に変換されます。Floating-point values are converted to F type when loaded onto the evaluation stack.

Microsoft 中間言語 (MSIL) が正しく記述されていると、ポインターの型と一貫性のある方法で ldind 命令が使用されるようになります。Correctly-formed Microsoft Intermediate Language (MSIL) ensures that the ldind instructions are used in a manner consistent with the type of the pointer.

最初にスタックにプッシュされたアドレスは、コンピューター上のオブジェクトの自然サイズに合わせる必要があります。または、@no__t 0 が発生する可能性があります (予防的対策の Unaligned プレフィックス命令を参照)。The address initially pushed onto the stack must be aligned to the natural size of objects on the machine or a NullReferenceException can occur (see the Unaligned prefix instruction for preventative measures). アドレスを返すすべての MSIL 命令 (たとえば、LdlocaLdarga) の結果は安全にアラインされます。The results of all MSIL instructions that return addresses (for example, Ldloca and Ldarga) are safely aligned. 1バイトを超えるデータ型の場合、バイトの順序付けはターゲット CPU に依存します。For datatypes larger than 1 byte, the byte ordering is dependent on the target CPU. バイト順に依存するコードは、すべてのプラットフォームで実行されない可能性があります。Code that depends on byte ordering might not run on all platforms.

無効なアドレスが検出された場合は、NullReferenceException がスローされます。NullReferenceException can be thrown if an invalid address is detected.

次の Emit メソッドオーバーロードは、ldind.i8 オペコードを使用できます。The following Emit method overload can use the ldind.i8 opcode:

  • ILGenerator (オペコード)ILGenerator.Emit(OpCode)