인라인 어셈블러 (C)Inline Assembler (C)

Microsoft 전용Microsoft Specific

인라인 어셈블러를 사용하면 추가 어셈블리 및 링크 단계를 수행하지 않고 C 소스 프로그램에 직접 어셈블리 언어 명령을 포함할 수 있습니다.The inline assembler lets you embed assembly-language instructions directly in your C source programs without extra assembly and link steps. 컴파일러에 인라인 어셈블러가 기본 제공되므로 MASM(Microsoft Macro Assembler)과 같은 별도의 어셈블러가 필요 없습니다.The inline assembler is built into the compiler — you don't need a separate assembler such as the Microsoft Macro Assembler (MASM).

인라인 어셈블러에는 별도의 어셈블리 및 링크 단계가 필요 없으므로 별도의 어셈블리보다 편리합니다.Because the inline assembler doesn't require separate assembly and link steps, it is more convenient than a separate assembler. 범위에 속한 C 변수 또는 함수 이름을 인라인 어셈블리 코드에 사용할 수 있으므로 인라인 어셈블리 코드를 프로그램의 C 코드와 쉽게 통합할 수 있습니다.Inline assembly code can use any C variable or function name that is in scope, so it is easy to integrate it with your program's C code. 또한 어셈블리 코드를 C 문과 함께 사용할 수 있으므로 C에서 단독으로 수행하기 어렵거나 불가능한 작업이 가능해집니다.And because the assembly code can be mixed with C statements, it can do tasks that are cumbersome or impossible in C alone.

__asm 키워드는 인라인 어셈블러를 호출하며 C 문을 사용할 수 있는 모든 곳에 나타날 수 있습니다.The __asm keyword invokes the inline assembler and can appear wherever a C statement is legal. 이 키워드는 자체적으로 표시할 수 없습니다.It cannot appear by itself. 이 키워드 다음에는 어셈블리 명령, 중괄호로 묶은 명령 그룹 또는 최소한 빈 괄호의 쌍이 와야 합니다.It must be followed by an assembly instruction, a group of instructions enclosed in braces, or, at the very least, an empty pair of braces. 여기서 "__asm 블록"이라는 용어는 중괄호에 상관없이 명령 또는 명령 그룹을 참조합니다.The term "__asm block" here refers to any instruction or group of instructions, whether or not in braces.

아래의 코드는 중괄호로 묶인 간단한 __asm 블록입니다.The code below is a simple __asm block enclosed in braces. 이 코드는 사용자 지정 함수 프롤로그 시퀀스입니다.(The code is a custom function prolog sequence.)

__asm  
{  
   push ebp  
   mov  ebp, esp  
   sub  esp, __LOCAL_SIZE  
}  

또는 __asm을 각 어셈블리 명령 앞에 배치할 수 있습니다.Alternatively, you can put __asm in front of each assembly instruction:

__asm push ebp  
__asm mov  ebp, esp  
__asm sub  esp, __LOCAL_SIZE  

__asm 키워드는 문 구분 기호이므로 같은 줄에 어셈블리 명령을 포함할 수 있습니다.Since the __asm keyword is a statement separator, you can also put assembly instructions on the same line:

__asm push ebp   __asm mov  ebp, esp   __asm sub  esp, __LOCAL_SIZE   

Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

함수 특성Function Attributes