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 

フィールド値

注釈

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

フォーマット アセンブリ形式 Description
4C ldind.i8 アドレス addrint64値をint64としてスタックに読み込みます。

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

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

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

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

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

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

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

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

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

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

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

適用対象