다음을 통해 공유


컴파일러 오류 C2422

'피연산자'에서 잘못된 세그먼트 재정의

인라인 어셈블리 코드는 피연산자에서 세그먼트 재정의 연산자(콜론)를 잘못 사용합니다. 가능한 원인은 다음과 같습니다.

  • 연산자 앞의 레지스터가 세그먼트 레지스터가 아닙니다.

  • 연산자 앞의 레지스터는 피연산자의 유일한 세그먼트 레지스터가 아닙니다.

  • 세그먼트 재정의 연산자는 간접 참조 연산자(대괄호) 내에 나타납니다.

  • 세그먼트 재정의 연산자 뒤의 식은 직접 피연산자 또는 메모리 피연산자가 아닙니다.

다음 샘플에서는 C2422를 생성합니다.

// C2422.cpp
// processor: x86
int main() {
   _asm {
      mov AX, [BX:ES]   // C2422
      mov AX, ES   // OK
   }
}