OpCodes.Unaligned Champ

Définition

Indique qu’une adresse en haut de la pile d’évaluation peut ne pas être alignée sur la taille naturelle immédiatement suivante ldind, , stind, ldfld, stfld, ldobjstobj, initblkou cpblk instruction.

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

Valeur de champ

Remarques

Le tableau suivant répertorie le format d'assembly MSIL (Hexadécimal et Microsoft Intermediate Language) de l'instruction, ainsi qu'un bref résumé de référence :

Format Format d’assembly Description
FE 12 <unsigned int8> non aligné. alignment Indique que l’instruction de pointeur suivante peut être non alignée.

Le comportement transitionnel de la pile, dans l’ordre séquentiel, est :

  1. Une adresse est envoyée sur la pile.

Unalignedspécifie que l’adresse (pointeur non managé, native int) sur la pile peut ne pas être alignée sur la taille naturelle de l’adresse immédiatement suivante ldind, , , stind, stfldldfld, ldobj, stobj, initblkou cpblk instruction. Autrement dit, pour une Ldind_I4 instruction, l’alignement de l’adresse peut ne pas être à une limite de 4 octets. Pour initblk et cpblk l’alignement par défaut dépend de l’architecture (4 octets sur des processeurs 32 bits, 8 octets sur des processeurs 64 bits). Les générateurs de code qui ne limitent pas leur sortie à une taille de mot 32 bits doivent être utilisés unaligned si l’alignement n’est pas connu au moment de la compilation pour être de 8 octets.

La valeur de l’alignement doit être 1, 2 ou 4 et signifie que le code généré doit supposer que l’adresse est octet, double octet ou quad-octet alignée, respectivement. Notez que les pointeurs temporaires (type *) sont toujours alignés.

Bien que l’alignement d’une cpblk instruction nécessite logiquement deux nombres (un pour la source et un pour la destination), il n’y a aucun impact notable sur les performances si seul le nombre inférieur est spécifié.

Les unaligned préfixes et les préfixes peuvent être combinés dans l’un ou volatile l’autre ordre. Ils doivent immédiatement précéder un ldind, stindldobjstfldstobjldfldinitblkou cpblk instruction. Seul le Volatile préfixe est autorisé pour les instructions et Stsfld les Ldsfld instructions.

Les surcharges de méthode suivantes Emit peuvent utiliser le unaligned code opcode :

S’applique à