В программировании на С, что делает "emit"?
Недавно я попытался расширить свои знания языка Си, и я наткнулся на программу, которая использует emit, чтобы, возможно, испустить байт.
__declspec(naked) void marker_begin() {
__asm {
_emit 0x51;
_emit 0x21;
_emit 0x1A;
_emit 0x14;
_emit 0x2C;
_emit 0x5B;
}
}
Для чего это может быть использовано? Заранее спасибо.
1 ответ
Ваша программа на C выполняет встроенный код ассемблера с помощью _asm
ключевое слово. _asm - это ключевое слово Microsoft, используемое в MSDN
, __asm
Ключевое слово вызывает встроенный ассемблер. За ней должны следовать инструкция по сборке, группа инструкций, заключенная в фигурные скобки, или, по крайней мере, пустая пара фигурных скобок.
_emit
псевдоинструкция похожа на DB
директива MASM
, _emit
является MSDN
конкретная псевдоинструкция. _emit
используется для определения одного непосредственного байта в текущем местоположении в текущем текстовом сегменте. _emit
может определять только один байт за раз и только в текстовом сегменте.