Aracılığıyla paylaş


OpCodes.Unaligned Alan

Tanım

Ş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:

  1. 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 :

Şunlara uygulanır