OpCodes.Unaligned Alan
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Şu anda değerlendirme yığınının üzerinde olan bir adresin, hemen aşağıdaki ldind, , stind, ldfld, stfld, ldobj, , stobj, initblkveya cpblk yönergesinin doğal boyutuna hizalanmayabileceğini gösterir.
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
Alan Değeri
Açıklamalar
Aşağıdaki tabloda yönergenin onaltılık ve Microsoft Ara Dil (MSIL) derleme biçiminin yanı sıra kısa bir başvuru özeti listelenmiştir:
| Format | Derleme Biçimi | Açıklama |
|---|---|---|
FE 12 <unsigned int8> |
Hizalanmamış. alignment |
Sonraki işaretçi yönergesinin hizalanmamış olabileceğini gösterir. |
Sıralı sırada yığın geçiş davranışı şöyledir:
- Bir adres yığına gönderilir.
Unalignedyığındaki adresin (yönetilmeyen işaretçi, native int) hemen ardından ldindgelen , , stind, ldfldstfld, , ldobj, , stobj, initblkveya cpblk yönergesinin doğal boyutuna hizalanmayabileceğini belirtir. Diğer bir ifadeyle, bir Ldind_I4 yönerge için adresin hizalaması 4 baytlık bir sınıra olmayabilir. için initblk ve cpblk varsayılan hizalama mimariye bağımlıdır (32 bit CPU'larda 4 bayt, 64 bit CPU'larda 8 bayt). Derleme zamanında hizalamanın 8 bayt olarak bilinmemesi durumunda çıkışlarını 32 bit sözcük boyutuyla kısıtlamayan kod oluşturucuların kullanması unaligned gerekir.
Hizalama değeri 1, 2 veya 4 olmalıdır ve oluşturulan kodun adresin sırasıyla bayt, çift bayt veya dört bayt hizalı olduğunu varsayması gerektiği anlamına gelir. Geçici işaretçilerin (tür *) her zaman hizalandığını unutmayın.
Yönergenin cpblk hizalaması mantıksal olarak iki sayı gerektirse de (biri kaynak ve biri hedef için), yalnızca daha düşük sayı belirtilirse performans üzerinde belirgin bir etki olmaz.
unaligned ve volatile ön ekleri her iki sırada da birleştirilebilir. Bir , , , , ldind, , stindldfld, stfld, ldobjveya stobj yönergeden hemen önce initblkcpblkolmalıdır.
Volatile ve Ldsfld yönergeleri için yalnızca ön eke Stsfld izin verilir.
Aşağıdaki Emit yöntem aşırı yüklemeleri opcode'unu unaligned kullanabilir: