内联汇编(c)
Microsoft 专用
一个内联汇编直接在 C 源程序中嵌入汇编语言指令,但没有额外的程序集和链接步骤。 一个内联汇编编译为编译器 —您不需要一个单独的汇编程序 (如 Microsoft Macro Assembler (masm)。
由于这个内联汇编不需要单独的程序集和链接步骤,与一个单独的汇编方便。 内联程序集代码可以使用在范围内的所有 C 变量或函数名,因此,其集成的程序的 C 代码非常容易。 并且,由于程序集代码可以与 C 语句组合,可以执行会相当麻烦或不能用的一个 C 的任务。
__asm 关键字调用一个内联汇编,并且可以显示,每当 c. 语句合法。 它不能单独出现。 必须由程序集指令执行它,请在大括号中的命令的一组,或者,至少, null 对大括号。 该术语 “__asm 块是”此处称为命令的说明或组,在大括号。
下面的代码是简单的 __asm 块对大括号。 (代码是一个自定义 prolog 序列。)
__asm
{
push ebp
mov ebp, esp
sub esp, __LOCAL_SIZE
}
或者,可以放置在每个程序集指令前面的 __asm :
__asm push ebp __asm mov ebp, esp __asm sub esp, __LOCAL_SIZE
因为 __asm 关键字是语句分隔符,则在同一行中放置程序集指令:
__asm push ebp
__asm mov ebp, esp
__asm sub esp, __LOCAL_SIZE
特定于 Microsoft 的结尾