Nyelv

OpCodes.Unaligned Mező

Definíció

Azt jelzi, hogy a kiértékelési verem tetején található cím nem feltétlenül igazodik a közvetlenül következő ldind, stind, , ldfld, stfldldobj, stobjinitblk, vagy cpblk utasítás természetes méretéhez.

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 

Mező értéke

Megjegyzések

Az alábbi táblázat felsorolja az utasítás hexadecimális és Microsoft köztes nyelv (MSIL) szerelvényformátumát, valamint egy rövid összefoglalást:

Format Szerelvény formátuma Leírás
FE 12 <unsigned int8> elaltathatatlan. alignment Azt jelzi, hogy az ezt követő mutatóutasítás el nem lett elaltatva.

A verem átmeneti viselkedése szekvenciális sorrendben a következő:

  1. A rendszer egy címet küld a verembe.

Unalignedazt határozza meg, hogy a verem címe (nem felügyelt mutató) native intesetleg nem igazodik a közvetlenül következőldind, , stind, , ldfldstfld, ldobjstobjinitblkvagy cpblk utasítás természetes méretéhez. Ez azt jelenti, hogy egy Ldind_I4 utasítás esetében a cím igazítása nem lehet 4 bájtos határ. initblk Az cpblk alapértelmezett igazítás az architektúrafüggő (4 bájt 32 bites PROCESSZOROKON, 8 bájt a 64 bites processzorokon). Azoknak a kódgenerátoroknak, amelyek nem korlátozzák a kimenetüket 32 bites szóméretre, akkor kell használniuk unaligned , ha a fordítási időpontban nem ismert, hogy az igazítás 8 bájtos legyen.

Az igazítás értékének 1, 2 vagy 4 kell lennie, és azt jelenti, hogy a generált kódnak feltételeznie kell, hogy a cím bájt, kétbájtos vagy négybájtos igazítású. Vegye figyelembe, hogy az átmeneti mutatók (típus *) mindig egymáshoz vannak igazítva.

Bár egy cpblk utasítás igazításához logikailag két számra lenne szükség (egy a forráshoz és egy a célhoz), a teljesítményre nincs észrevehető hatása, ha csak az alacsonyabb szám van megadva.

Az unaligned előtagok és volatile az előtagok bármelyik sorrendben kombinálhatók. Közvetlenül egy , , ldind, stind, ldfld, stfld, ldobj, stobjvagy initblk utasítás előtt cpblkkell lenniük. Csak az Volatile előtag és az LdsfldStsfld utasítások engedélyezettek.

A következő Emit metódus túlterhelései használhatják az unaligned opcode-ot:

A következőre érvényes: