OpCodes.Unaligned Bidang
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menunjukkan bahwa alamat yang saat ini berada di atas tumpukan evaluasi mungkin tidak selaras dengan ukuran alami instruksi segera setelahnya ldind
, , stind
, ldfld
stfld
ldobj
, stobj
, , initblk
atau 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
Nilai Bidang
Keterangan
Tabel berikut mencantumkan format rakitan heksadesimal dan Microsoft Intermediate Language (MSIL) instruksi, bersama dengan ringkasan referensi singkat:
Format | Format Rakitan | Deskripsi |
---|---|---|
FE 12 <unsigned int8 > |
tidak ditandatangani. alignment |
Menunjukkan bahwa instruksi pointer berikutnya mungkin tidak ditandatangani. |
Perilaku transisi tumpukan, dalam urutan berurutan, adalah:
- Alamat didorong ke tumpukan.
Unaligned
menentukan bahwa alamat (penunjuk yang tidak dikelola, native int
) pada tumpukan mungkin tidak diratakan ke ukuran alami dari instruksi segera setelah ldind
, , stind
, stfld
ldfld
, ldobj
, stobj
, initblk
, atau cpblk
. Artinya, untuk Ldind_I4 instruksi penyelarasan alamat mungkin tidak ke batas 4-byte. Untuk initblk
dan cpblk
perataan default tergantung pada arsitektur (4-byte pada CPU 32-bit, 8-byte pada CPU 64-bit). Generator kode yang tidak membatasi outputnya ke ukuran kata 32-bit harus digunakan unaligned
jika penyelarasan tidak diketahui pada waktu kompilasi menjadi 8-byte.
Nilai perataan harus 1, 2, atau 4 dan berarti bahwa kode yang dihasilkan harus mengasumsikan bahwa alamat tersebut masing-masing adalah byte, byte ganda, atau quad-byte yang selaras. Perhatikan bahwa penunjuk sementara (jenis *
) selalu diratakan.
Meskipun penyelarasan untuk cpblk
instruksi akan secara logis memerlukan dua angka (satu untuk sumber dan satu untuk tujuan), tidak ada dampak nyata pada performa jika hanya angka yang lebih rendah yang ditentukan.
unaligned
Awalan dan volatile
dapat digabungkan dalam kedua urutan. Mereka harus segera mendahului ldind
instruksi , , ldfld
stind
, stfld
, ldobj
stobj
, initblk
, atau cpblk
. Hanya awalan Volatile yang diizinkan untuk Ldsfld instruksi dan Stsfld .
Metode overload berikut Emit dapat menggunakan unaligned
opcode: