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 Указывает, что последующие инструкции указателя могут быть неуправляемы.

Переходное поведение стека в последовательном порядке:

  1. Адрес передается в стек.

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:

Применяется к