OpCodes.Unaligned Поле
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает, что адрес, расположенный на вершине стека оценки, может не соответствовать естественному размеру немедленно следующегоldind, , stind, ldfldstfldldobjstobjinitblkили 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
Значение поля
Комментарии
В следующей таблице перечислены шестнадцатеричные и шестнадцатеричные и Microsoft формат сборки промежуточного языка (MSIL) инструкции, а также краткая сводка по ссылке:
| Формат | Формат сборки | Description |
|---|---|---|
FE 12 <unsigned int8> |
unaligned. alignment |
Указывает, что последующие инструкции указателя могут быть неуправляемы. |
Переходное поведение стека в последовательном порядке:
- Адрес передается в стек.
Unalignedуказывает, что адрес (неуправляемый указатель,native int) в стеке может не соответствовать естественному размеру немедленно следующегоldind, , stindldfldstfldldobjstobjinitblkили cpblk инструкции. То есть для Ldind_I4 инструкции выравнивание адреса может не быть границой 4-байтов. Для initblk и cpblk выравнивание по умолчанию зависит архитектура (4-байт на 32-разрядных ЦП, 8-байт на 64-разрядных ЦП). Генераторы кода, не ограничивающие их выходные данные размером 32-разрядного слова, должны использовать unaligned , если выравнивание не известно во время компиляции 8-байтов.
Значение выравнивания должно быть равно 1, 2 или 4 и означает, что созданный код должен предполагать, что адрес равен байтам, двойным байтам или квадратно-байтам соответственно. Обратите внимание, что временные указатели (тип *) всегда выровнены.
Хотя выравнивание инструкции cpblk логически требует двух чисел (один для источника и одного для назначения), заметное влияние на производительность не оказывается, если указано только меньшее число.
Префиксы unaligned и volatile префиксы могут объединяться в любом порядке. Они должны немедленно предшествовать инструкции ldind, stindldfldstfldldobjили stobjinitblkcpblk инструкции.
Volatile Только префикс разрешен для инструкций Ldsfld и Stsfld инструкций.
Следующие Emit перегрузки методов могут использовать unaligned код opcode: