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 dari instruksi segera berikut ldind, , stind, ldfldstfldldobj, 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 Bahasa Perantara (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.
Unalignedmenentukan bahwa alamat (penunjuk yang tidak dikelola, native int) pada tumpukan mungkin tidak selaras dengan ukuran alami dari instruksi segera berikut ldind, , stind, ldfldstfld, ldobj, stobj, initblk, atau cpblk . Artinya, untuk Ldind_I4 instruksi penyelarasan alamat mungkin tidak ke batas 4-byte. Untuk initblk dan cpblk perataan default adalah arsitektur tergantung (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 perataan 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 adalah byte, byte ganda, atau byte quad yang selaras, masing-masing. 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 salah satu urutan. Mereka harus segera mendahului ldindinstruksi , , stindldfld, stfldldobj, stobj, initblk, atau cpblk . Hanya awalan yang Volatile diizinkan untuk Ldsfld instruksi dan Stsfld .
Overload metode berikut Emit dapat menggunakan unaligned opcode: