OpCodes.Ldind_I4 Campo
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Carrega um valor de tipo int32 como um int32 na pilha de avaliação indiretamente.
public: static initonly System::Reflection::Emit::OpCode Ldind_I4;
public static readonly System.Reflection.Emit.OpCode Ldind_I4;
staticval mutable Ldind_I4 : System.Reflection.Emit.OpCode
Public Shared ReadOnly Ldind_I4 As OpCode
Valor de Campo
Observações
A tabela seguinte lista o formato hexadecimal e assembly da Microsoft Intermediate Language (MSIL) da instrução, juntamente com um breve resumo de referência:
| Formato | Formato de Montagem | Description |
|---|---|---|
| 4A | ldind.i4 | Carrega o int32 valor em endereço addr na pilha como um int32. |
O comportamento de transição da pilha, por ordem sequencial, é:
Um endereço é colocado na pilha.
O endereço é extraído da pilha; O valor localizado no endereço é obtido.
O valor obtido é empurrado para a pilha.
A ldind.i4 instrução carrega indiretamente um int32 valor do endereço especificado (do tipo native int, &, ou *) na pilha como um int32.
Todas as ldind instruções são atalhos para uma Ldobj instrução que especifica a classe de valor incorporada correspondente.
Note que valores inteiros inferiores a 4 bytes são estendidos para int32 (não native int) quando são carregados na pilha de avaliação. Os valores de ponto flutuante são convertidos para F tipo quando carregados na pilha de avaliação.
A Linguagem Intermédia Microsoft (MSIL) corretamente formada garante que as instruções ldind são usadas de forma consistente com o tipo do ponteiro.
O endereço inicialmente empurrado para a pilha deve estar alinhado ao tamanho natural dos objetos na máquina ou pode ocorrer NullReferenceException (ver a Unaligned instrução prefixa para medidas preventivas). Os resultados de todas as instruções MSIL que retornam endereços (por exemplo, Ldloca e Ldarga) estão alinhados em segurança. Para tipos de dados maiores que 1 byte, a ordenação dos bytes depende da CPU alvo. Código que depende da ordem dos bytes pode não correr em todas as plataformas.
NullReferenceException pode ser lançado se for detetado um endereço inválido.
O seguinte Emit método de sobrecarga pode usar o ldind.i4 opcode: