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 ldindgelen , , 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:
| 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.
Unalignedyığındaki adresin (yönetilmeyen bir işaretçi, native int) hemen sonra ldindgelen , , ldobjstindldfldstfld, stobj, initblkveya 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, stfldstobjinitblkldobjveya cpblk yönergeden ldindhemen ö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 :