Partager via


OpCodes.Unaligned Champ

Définition

Indique qu'une adresse actuellement située en haut de la pile d'évaluation peut ne pas être alignée avec la taille naturelle de l'instruction ldind, stind, ldfld, stfld, ldobj, stobj, initblk ou cpblk qui suit immédiatement.

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 et hexadécimal de l’instruction, ainsi qu’un bref résumé des références :

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 transitoire de la pile, dans l’ordre séquentiel, est le suivant :

  1. Une adresse est envoyée dans 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’instruction , stind, ldobjldfldstfldstobjinitblkou cpblk qui suit ldindimmédiatement. Autrement dit, pour une Ldind_I4 instruction, l’alignement de l’adresse peut ne pas être sur une limite de 4 octets. Pour initblk et cpblk l’alignement par défaut dépend de l’architecture (4 octets sur les processeurs 32 bits, 8 octets sur les processeurs 64 bits). Les générateurs de code qui ne limitent pas leur sortie à une taille de mot 32 bits doivent utiliser unaligned si l’alignement n’est pas connu au moment de la compilation comme étant de 8 octets.

La valeur de l’alignement doit être 1, 2 ou 4, ce qui signifie que le code généré doit supposer que l’adresse est alignée sur octets, sur deux octets ou sur quatre octets, 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 volatile peuvent être combinés dans l’un ou l’autre ordre. Ils doivent immédiatement précéder une ldindinstruction , stind, ldfld, stfld, stobjldobj, , initblk, ou cpblk . Seul le Volatile préfixe est autorisé pour les Ldsfld instructions et Stsfld .

Les surcharges de méthode suivantes Emit peuvent utiliser l’opcode unaligned :

S’applique à