我最近试图扩展我的 C 语言知识,我遇到了一个使用 emit 的程序,可能会 emit 一个字节。
__declspec(naked) void marker_begin() {
__asm {
_emit 0x51;
_emit 0x21;
_emit 0x1A;
_emit 0x14;
_emit 0x2C;
_emit 0x5B;
}
}
这可以用来做什么? 预先感谢。
您的 C 程序正在使用
_asm
关键字执行内联汇编代码。 _asm 是 MSDN
中使用的 Microsoft 特定关键字。 __asm
关键字调用内联汇编器。它后面必须跟着一条汇编指令、一组用大括号括起来的指令,或者至少是一对空大括号。
_emit
伪指令与DB
的MASM
指令类似。 _emit
是MSDN
特定的伪指令。 _emit
用于在当前文本段的当前位置定义单个立即字节。 _emit
一次只能定义一个字节,并且只能在文本段中定义。
Turbo C 2.0,1988,16 位的 __émit,您可以访问 32 位指令。你可以放置几个字符和无符号字符(我想也是 int 吗?) __发出(0xB8,17u); (发出后,2 _)