Псевдоинструкция _emit

Блок, относящийся только к системам Майкрософт

_emit псевдоинструкция определяет один байт в текущем расположении в текущем сегменте текста. _emit псевдоинструкция напоминает директиву DB MASM.

В следующем примере в код помещаются байты 0x4A, 0x43 и 0x4B:

#define randasm __asm _emit 0x4A __asm _emit 0x43 __asm _emit 0x4B
.
.
.
__asm {
    randasm
    }

Внимание

Если псевдокоманда _emit создает инструкции, которые изменяют регистры, а приложение компилируется с включенными оптимизациями, то компилятор не в состоянии определить, на какие регистры она действует. Например, если _emit создается инструкция, которая изменяет регистр rax, компилятор не знает, что rax изменился. Затем компилятор может сделать неверное допущение о значении этого регистра после выполнения встроенного кода на языке ассемблера. Поэтому запущенное приложение может работать непредсказуемым образом.

Завершение блока, относящегося только к системам Майкрософт

См. также

Использование языка ассемблера в блоках __asm