2

我最近尝试扩展我对 C 语言的知识,并且遇到了一个使用 emit 的程序,它可能会发出一个字节。

__declspec(naked) void marker_begin() {
__asm {
    _emit 0x51;
    _emit 0x21;
    _emit 0x1A;
    _emit 0x14;
    _emit 0x2C;
    _emit 0x5B;
}

}

这可以用来做什么?提前致谢。

4

1 回答 1

13

您的 C 程序正在使用_asm关键字执行内联汇编代码。_asm 是 Microsoft 特定的关键字,用于MSDN. 关键字调用内联__asm汇编器。它后面必须跟一个汇编指令,一组用大括号括起来的指令,或者至少是一对空的大括号。

_emit伪指令类似于的DB指令MASM_emitMSDN特定的伪指令。_emit用于在当前文本段的当前位置定义单个立即字节。_emit一次只能定义一个字节,并且只能在文本段中定义。

于 2013-05-03T05:18:21.257 回答