OpCodes.Unaligned Pole
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Označuje, že adresa, která je aktuálně na vrcholu zásobníku hodnocení, nemusí být zarovnaná k přirozené velikosti bezprostředně následující , , , , ldindstindldfldstfldldobjnebo stobj instrukce. initblkcpblk
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
Hodnota pole
Poznámky
Následující tabulka uvádí šestnáctkový formát sestavení jazyka MSIL (Intermediate Language) a Microsoft s stručným přehledem referenčních informací:
| Formát | Formát sestavení | Description |
|---|---|---|
FE 12 <unsigned int8> |
Unaligned. alignment |
Označuje, že následující instrukce ukazatele může být nerovnaná. |
Přechodné chování zásobníku v sekvenčním pořadí je:
- Adresa se nasdílí do zásobníku.
Unaligned určuje, že adresa (nespravovaný ukazatel, native int) v zásobníku nemusí být zarovnaná k přirozené velikosti bezprostředně následující ldind, , stind, , ldfld, stfld, ldobj, , stobj, initblknebo cpblk instrukce. To znamená, že pro Ldind_I4 instrukce, že zarovnání adresy nemusí být na hranici 4 bajtů.
initblk Výchozí cpblk zarovnání je závislé na architektuře (4 bajty na 32bitových procesorech, 8 bajtů na 64bitových procesorech). Generátory kódu, které neomezují výstup na 32bitovou velikost slova, musí použít unaligned , pokud zarovnání není známo v době kompilace na 8 bajtů.
Hodnota zarovnání musí být 1, 2 nebo 4 a znamená, že vygenerovaný kód by měl předpokládat, že adresa je bajtová, dvoubajtová nebo čtyřbajtová zarovnaná. Všimněte si, že přechodné ukazatele (typ *) jsou vždy zarovnány.
I když zarovnání instrukce cpblk by logicky vyžadovalo dvě čísla (jedna pro zdroj a druhou pro cíl), neexistuje žádný znatelný dopad na výkon, pokud je zadáno pouze nižší číslo.
Předpony unaligned a volatile předpony lze zkombinovat v obou pořadích. Musí bezprostředně předcházet ldind, , stindldfldstfldldobj, stobj, initblk, nebo cpblk instrukce. Pouze předpona je povolena Volatile pro pokyny Ldsfld a Stsfld pokyny.
Následující Emit přetížení metody může použít unaligned opcode: