OpCodes.Unaligned Fält
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger att en adress som för närvarande finns ovanpå utvärderingsstacken kanske inte är justerad till den naturliga storleken på följande ldind, , ldfldstind, stfld, ldobj, stobj, initblkeller cpblk instruktion.
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
Fältvärde
Kommentarer
I följande tabell visas instruktionens sammansättningsformat för hexadecimalt och Microsoft mellanliggande språk (MSIL), tillsammans med en kort referenssammanfattning:
| Format | Sammansättningsformat | Description |
|---|---|---|
FE 12 <unsigned int8> |
ojusterad. alignment |
Anger att den efterföljande pekarinstruktionen kan vara ojusterad. |
Stackens övergångsbeteende i sekventiell ordning är:
- En adress skickas till stacken.
Unaligned anger att adressen (en ohanterad pekare, native int) på stacken kanske inte är justerad till den naturliga storleken för omedelbart följande ldind, stind, ldfld, stfld, ldobj, stobj, , initblkeller cpblk instruktion. För en Ldind_I4 instruktion kanske adressjusteringen inte är till en 4-bytesgräns. För initblk och cpblk standardjusteringen är arkitekturberoende (4 byte på 32-bitars processorer, 8 byte på 64-bitars processorer). Kodgeneratorer som inte begränsar sina utdata till en 32-bitars ordstorlek måste använda unaligned om justeringen inte är känd vid kompileringstiden till 8 byte.
Värdet för justeringen måste vara 1, 2 eller 4 och innebär att den genererade koden bör förutsätta att adressen är byte, dubbel byte eller quad-byte justerad. Observera att tillfälliga pekare (typ *) alltid är justerade.
Även om justeringen för en cpblk instruktion logiskt skulle kräva två tal (ett för källan och ett för målet), finns det ingen märkbar inverkan på prestanda om bara det lägre talet anges.
Prefixen unaligned och volatile kan kombineras i båda ordningarna. De måste omedelbart föregå instruktionen ldind, stind, ldfld, stfld, ldobjstobj, initblkeller cpblk . Endast prefixet Volatile tillåts för Ldsfld instruktionerna och Stsfld .
Följande Emit metodöverlagringar kan använda unaligned opcode: