Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

OpCodes.Unaligned, champ

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.

Espace de noms :  System.Reflection.Emit
Assembly :  mscorlib (dans mscorlib.dll)
public static readonly OpCode Unaligned

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

Format

Format d'assembly

Description

FE 12 < unsigned int8 >

unaligned. alignment

Indique que l'instruction de pointeur qui suit peut ne pas être alignée.

Le comportement de transition de la pile, dans un ordre séquentiel, est le suivant :

  1. Une adresse fait l'objet d'un push dans la pile.

Unaligned spécifie que l'adresse (un pointeur non managé, native int) dans la pile 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. En d'autres termes, pour une instruction Ldind_I4, l'alignement de l'adresse peut ne pas être avec une limite de 4 octets. Pour initblk et cpblk, l'alignement par défaut dépend de l'architecture (4 octets sur les unités centrales 32 bits, 8 octets sur les unités centrales 64 bits). Les générateurs de code qui ne limitent pas leur sortie à une taille de mot de 32 bits doivent utiliser unaligned si, au moment de la compilation, l'alignement n'est pas connu comme étant égal à 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 respectivement alignée sur un, deux ou quatre octets. Notez que les pointeurs transitoires (type *) sont toujours alignés.

Même si l'alignement pour une instruction cpblk nécessite logiquement deux nombres (un pour la source et un pour la destination), on ne remarque aucun effet sur les performances si seul le nombre inférieur est spécifié.

Les préfixes unaligned et volatile peuvent être combinés dans n'importe quel ordre. Ils doivent immédiatement précéder une instruction ldind, stind, ldfld, stfld, ldobj, stobj, initblk ou cpblk. Seul le préfixe Volatile est autorisé pour les instructions Ldsfld et Stsfld.

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

  • ILGenerator.Emit(OpCode, Label)

  • ILGenerator.Emit(OpCode, long)

.NET Framework

Pris en charge dans : 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

.NET pour les applications du Windows Store

Pris en charge dans : Windows 8

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
© 2013 Microsoft. Tous droits réservés.