OpCodes.Unaligned Feld
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, dass eine Adresse auf dem Auswertungsstapel möglicherweise nicht an der natürlichen Größe der unmittelbar folgenden , , , , , , stobjoder initblkcpblk Anweisung ausgerichtet ist. ldobjstfldldfldstindldind
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
Feldwert
Hinweise
In der folgenden Tabelle sind das Hexadezimal- und Microsoft MSIL-Assemblyformat (Intermediate Language) der Anweisung zusammen mit einer kurzen Referenzzusammenfassung aufgeführt:
| Format | Assemblyformat | Description |
|---|---|---|
FE 12 <unsigned int8> |
Unaligned. alignment |
Gibt an, dass die nachfolgende Zeigeranweisung möglicherweise nicht ausgerichtet ist. |
Das Übergangsverhalten des Stapels in sequenzieller Reihenfolge lautet:
- Eine Adresse wird auf den Stapel verschoben.
UnalignedGibt an, dass die Adresse (ein nicht verwalteter Zeiger) native intauf dem Stapel möglicherweise nicht an der natürlichen Größe der unmittelbar folgenden ldind, , , ldfldstind, ldobjstfld, stobj, oder initblkAnweisung ausgerichtet cpblk ist. Das heißt, für eine Ldind_I4 Anweisung darf die Ausrichtung der Adresse nicht auf eine Grenze von 4 Byte sein. Für initblk und cpblk die Standardausrichtung ist architekturabhängig (4-Byte auf 32-Bit-CPUs, 8-Byte auf 64-Bit-CPUs). Codegeneratoren, die ihre Ausgabe nicht auf eine 32-Bit-Wortgröße beschränken, müssen verwendet werden unaligned , wenn die Ausrichtung zur Kompilierungszeit nicht als 8-Byte bekannt ist.
Der Wert der Ausrichtung muss 1, 2 oder 4 sein und bedeutet, dass der generierte Code davon ausgehen sollte, dass die Adresse byte, double-byte oder quad-byte ausgerichtet ist. Beachten Sie, dass vorübergehende Zeiger (Typ *) immer ausgerichtet sind.
Während die Ausrichtung für eine cpblk Anweisung logisch zwei Zahlen erfordert (eine für die Quelle und eine für das Ziel), gibt es keine spürbaren Auswirkungen auf die Leistung, wenn nur die niedrigere Zahl angegeben wird.
Die unaligned Präfixe und volatile Präfixe können in beiden Reihenfolge kombiniert werden. Sie müssen unmittelbar vor einer ldind, stind, , stfldldfld, , ldobj, stobjoder initblkcpblk Anweisung. Nur das Volatile Präfix ist für die Ldsfld und Stsfld Anweisungen zulässig.
Die folgenden Emit Methodenüberladungen können den unaligned Opcode verwenden: