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 bulunan bir adresin hemen sonra ldind
gelen , , stind
, ldfld
, stfld
, ldobj
, stobj
, initblk
veya 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:
Biçimlendir | Derleme Biçimi | Description |
---|---|---|
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ışı şu şekildedir:
- Bir adres yığına gönderilir.
Unaligned
yığındaki adresin (yönetilmeyen bir işaretçi, native int
) hemen sonra ldind
gelen , , ldobj
stind
ldfld
stfld
, stobj
, initblk
veya cpblk
yönergesinin doğal boyutuna hizalanmayabileceğini belirtir. Yani, 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 sırasıyla adresin 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 bir sayı belirtilirse performans üzerinde belirgin bir etki olmaz.
unaligned
ve volatile
ön ekleri her iki sırada da birleştirilebilir. Bir , , , , ldfld
, stfld
stobj
initblk
ldobj
veya cpblk
yönergeden ldind
hemen önce olmalıdır. stind
Volatile ve Stsfld yönergeleri için yalnızca ön eke Ldsfld izin verilir.
Aşağıdaki Emit yöntem aşırı yüklemeleri opcode kullanabilir unaligned
: