OpCodes.Unaligned 欄位
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示目前位於評估堆疊頂端的位置可能未對齊緊接 ldind、stind、ldfld、stfld、ldobj、stobj、initblk 或 cpblk 指令的正常大小。
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
欄位值
備註
下表列出指示的十六進位和 Microsoft Intermediate Language (MSIL) 元件格式,以及簡短的參考摘要:
| 格式 | 元件格式 | Description |
|---|---|---|
FE 12 <unsigned int8> |
未對齊。 alignment |
表示後續指標指令可能未對齊。 |
堆疊轉換行為會依循序順序為:
- 位址會推送至堆疊。
Unaligned會指定位址 (Unmanaged 指標, native int) 堆疊上可能無法對齊緊接在 、stind、、ldfld、ldobjstfldstobjinitblk 或 cpblk 指令之後ldind的自然大小。 也就是說,針對 Ldind_I4 指示,位址的對齊方式可能不是 4 位元組界限。 針對 initblk 和 cpblk 預設對齊是架構相依 (於 32 位 CPU 上的 4 位元組、64 位 CPU 上的 8 位元組) 。 如果編譯時期不知道對齊方式為8位元組,則不會將其輸出限制為32位字型大小的程式代碼產生器必須使用 unaligned 。
對齊的值必須是 1、2 或 4,表示產生的程式代碼應該分別假設位址是位元組、雙位元組或四位元組對齊。 請注意, (類型 *) 暫時性指標一律對齊。
雖然指令的 cpblk 對齊方式需要兩個數位 (一個用於來源,另一個用於目的地) ,但如果只指定較低的數位,則效能不會明顯影響。
unaligned和 volatile 前置詞可以依任一順序合併。 它們必須緊接在 ldind、stind、ldfldstfld、、ldobj、stobj、 initblk或 cpblk 指令之前。
Volatile和指令只允許LdsfldStsfld前置詞。
下列 Emit 方法多載可以使用 unaligned opcode: