内联汇编(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 的结尾

请参见

概念

功能属性