컴파일러 오류 C2422
'피연산자'에서 잘못된 세그먼트 재정의
인라인 어셈블리 코드는 피연산자에서 세그먼트 재정의 연산자(콜론)를 잘못 사용합니다. 가능한 원인은 다음과 같습니다.
연산자 앞의 레지스터가 세그먼트 레지스터가 아닙니다.
연산자 앞의 레지스터는 피연산자의 유일한 세그먼트 레지스터가 아닙니다.
세그먼트 재정의 연산자는 간접 참조 연산자(대괄호) 내에 나타납니다.
세그먼트 재정의 연산자 뒤의 식은 직접 피연산자 또는 메모리 피연산자가 아닙니다.
다음 샘플에서는 C2422를 생성합니다.
// C2422.cpp
// processor: x86
int main() {
_asm {
mov AX, [BX:ES] // C2422
mov AX, ES // OK
}
}