식 계산

디버거는 MASM 식C++ 식의 두 가지 형식을 이해합니다.

MASM(Microsoft Macro Assembler) 식은 달리 언급된 경우를 제외하고 이 도움말 설명서의 예제에서 사용됩니다. MASM 식에서 모든 기호는 주소로 처리됩니다.

C++ 식은 실제 C++ 코드에서 사용되는 식과 동일합니다. 이러한 식에서 기호는 적절한 데이터 형식으로 이해됩니다.

각 구문을 사용하는 경우

다음 방법 중 하나로 기본 식 계산기를 선택할 수 있습니다.

위의 메서드 중 하나를 사용하지 않는 경우 디버거는 MASM 식 계산기를 사용합니다.

디버거 상태를 변경하지 않고 식을 평가하려면 ? (식 평가) 명령.

모든 명령 및 디버깅 정보 창은 다음 예외를 제외하고 기본 식 계산기를 통해 인수를 해석합니다.

  • ?? (C++ 식 평가) 명령은 항상 C++ 식 계산기를 사용합니다.

  • 조사식 창은 항상 C++ 식 계산기를 사용합니다.

  • 로컬 창은 항상 C++ 식 계산기를 사용합니다.

  • 일부 확장 명령은 항상 MASM 식 계산기를 사용하며 다른 확장 명령은 전체 식 대신 숫자 인수만 허용합니다.

  • 식의 일부가 괄호로 묶이고 식 앞에 두 개의 기호(@@)를 삽입하는 경우 식은 일반적으로 이 경우에 사용되지 않는 식 계산기에서 계산됩니다.

두 개의 기호(@@)를 사용하면 단일 명령의 서로 다른 매개 변수에 대해 두 개의 서로 다른 계산기를 사용할 수 있습니다. 또한 다른 메서드에 따라 긴 식의 여러 부분을 평가할 수 있습니다. 두 개의 기호를 중첩할 수 있습니다. 두 기호의 각 모양은 다른 식 계산기로 전환됩니다.

경고 C++ 식 구문은 구조체와 변수를 조작하는 데 유용하지만 디버거 명령의 매개 변수에 대한 파서로는 적합하지 않습니다. 일반적인 용도로 디버거 명령을 사용하거나 디버거 확장을 사용하는 경우 MASM 식 구문을 기본 식 계산자로 설정해야 합니다. C++ 식 구문을 사용하는 특정 매개 변수가 있어야 하는 경우 두 개의 기호(@@) 구문을 사용합니다.

두 가지 식 형식에 대한 자세한 내용은 숫자 식 구문을 참조하세요.

식의 숫자

MASM 식의 숫자는 현재 radix에 따라 해석됩니다. n(숫자 기준 설정) 명령을 사용하여 기본 radix를 16, 10 또는 8로 설정할 수 있습니다. 접두사 없는 모든 숫자는 이 베이스에서 해석됩니다. 기본 radix는 0x 접두사(16진수), 0n 접두사(10진수), 0t 접두사(8진수) 또는 0y 접두사(이진)를 지정하여 재정의할 수 있습니다.

C++ 식의 숫자는 다르게 지정하지 않는 한 10진수로 해석됩니다. 16진수 정수를 지정하려면 숫자 앞에 0x 를 추가합니다. 8진수 정수를 지정하려면 숫자 앞에 0 을 추가합니다. 그러나 디버거의 출력에서 0n 10진수 접두사는 경우에 따라 사용됩니다.

여러 밑의 숫자를 동시에 표시하려면 .formats(숫자 형식 표시) 명령을 사용합니다.

식의 기호

두 가지 형식의 식은 기호를 다르게 해석합니다.

  • MASM 식에서 각 기호는 주소로 해석됩니다. 기호가 참조하는 항목에 따라 이 주소는 전역 변수, 지역 변수, 함수, 세그먼트, 모듈 또는 기타 인식된 레이블의 주소입니다.

  • C++ 식에서 각 기호는 해당 형식에 따라 해석됩니다. 기호가 참조하는 항목에 따라 정수, 데이터 구조, 함수 포인터 또는 기타 데이터 형식으로 해석될 수 있습니다. C++ 데이터 형식(예: 수정되지 않은 모듈 이름)에 해당하지 않는 기호는 구문 오류를 만듭니다.

기호가 모호할 수 있는 경우 모듈 이름 및 느낌표( ! )로 앞에 옵니다. 기호 이름을 16진수로 해석할 수 있는 경우 모듈 이름과 느낌표( ! ) 또는 느낌표만 앞에 붙입니다. 기호가 로컬로 지정되도록 지정하려면 모듈 이름을 생략하고 기호 이름 앞에 달러 기호와 느낌표( $! )를 포함합니다. 기호 해석에 대한 자세한 내용은 기호 구문 및 기호 일치를 참조하세요.

식의 연산자

각 식 형식은 서로 다른 연산자 컬렉션을 사용합니다.

MASM 식 및 해당 우선 순위 규칙에서 사용할 수 있는 연산자에 대한 자세한 내용은 MASM 번호 및 연산자를 참조하세요.

C++ 식에서 사용할 수 있는 연산자와 해당 우선 순위 규칙에 대한 자세한 내용은 C++ 숫자 및 연산자를 참조하세요.

MASM 작업은 항상 바이트 기반이며 C++ 작업은 C++ 형식 규칙(포인터 산술의 크기 조정 포함)을 따릅니다.

다른 구문의 몇 가지 예제는 혼합 식 예제를 참조하세요.