Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Блок, относящийся только к системам Майкрософт
_emit псевдоинструкция определяет один байт в текущем расположении в текущем сегменте текста. _emit псевдоинструкция напоминает директиву DB MASM.
В следующем примере в код помещаются байты 0x4A, 0x43 и 0x4B:
#define randasm __asm _emit 0x4A __asm _emit 0x43 __asm _emit 0x4B
.
.
.
__asm {
randasm
}
Внимание
Если псевдокоманда _emit
создает инструкции, которые изменяют регистры, а приложение компилируется с включенными оптимизациями, то компилятор не в состоянии определить, на какие регистры она действует. Например, если _emit
создается инструкция, которая изменяет регистр rax, компилятор не знает, что rax изменился. Затем компилятор может сделать неверное допущение о значении этого регистра после выполнения встроенного кода на языке ассемблера. Поэтому запущенное приложение может работать непредсказуемым образом.
Завершение блока, относящегося только к системам Майкрософт