다음을 통해 공유


__asm 블록에서 연산자 사용

Microsoft 전용

블록은 __asm C 또는 C++ 특정 연산자(예: 연산자 << )를 사용할 수 없습니다. 그러나 C 및 MASM에서 공유하는 연산자(예: * 연산자)는 어셈블리 언어 연산자로 해석됩니다. 예를 들어 블록 외부에서 __asm 대괄호([ ])는 바깥쪽 배열 첨자로 해석되며, C는 배열의 요소 크기로 자동으로 조정됩니다. __asm 블록 안에서 MASM 인덱스 연산자로 표시되며, 이 연산자는 임의의 데이터 개체 또는 레이블(배열만이 아님)로부터 크기를 조절하지 않은 바이트 오프셋을 만듭니다. 다음 코드에서는 차이점을 보여 줍니다.

int array[10];

__asm mov array[6], bx ;  Store BX at array+6 (not scaled)

array[6] = 0;         /* Store 0 at array+24 (scaled) */

array에 대한 첫 번째 참조는 크기가 조정되지 않지만 두 번째 참조는 크기가 조정됩니다. TYPE 연산자를 사용하여 상수에 따라 크기 조정을 수행할 수 있습니다. 예를 들어 다음 두 개의 문은 동일합니다.

__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24

array[6] = 0;                   /* Store 0 at array + 24 */

Microsoft 전용 종료

참고 항목

__asm 블록에서 C 또는 C++ 사용