OpCodes.Unaligned Pole

Definice

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:

  1. 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:

Platí pro