OpCodes.Unaligned Mező
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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ő:
- 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: