구문 등록
디버거는 레지스터 및 부동 소수점 레지스터를 제어할 수 있습니다.
식에서 레지스터를 사용하는 경우 레지스터 앞에 at sign( @ )을 추가해야 합니다. 이 기호는 다음 텍스트가 레지스터의 이름임을 디버거에 알립니다.
MASM 식 구문을 사용하는 경우 매우 일반적인 특정 레지스터에 대한 at 기호를 생략할 수 있습니다. x86 기반 시스템에서 eax, ebx, ecx, edx, esi, edi, ebp, eip 및 efl 레지스터에 대한 at 기호를 생략할 수 있습니다. 그러나 at 기호 없이 덜 일반적인 레지스터를 지정하는 경우 디버거는 먼저 텍스트를 16진수로 해석하려고 시도합니다. 텍스트에 16진수 이외의 문자가 포함된 경우 디버거는 다음으로 텍스트를 기호로 해석합니다. 마지막으로 디버거가 기호 일치 항목을 찾지 못하면 디버거는 텍스트를 레지스터로 해석합니다.
C++ 식 구문을 사용하는 경우 항상 at 기호가 필요합니다.
r(레지스터) 명령은 이 규칙의 예외입니다. 디버거는 항상 첫 번째 인수를 레지스터로 해석합니다. (서명 시 은 필요하지 않거나 허용되지 않습니다.) r 명령에 대한 두 번째 인수가 있는 경우 기본 식 구문에 따라 해석됩니다. 기본 식 구문이 C++인 경우 다음 명령을 사용하여 ebx 레지스터를 eax 레지스터에 복사해야 합니다.
0:000> r eax = @ebx
각 프로세서와 관련된 레지스터 및 지침에 대한 자세한 내용은 프로세서 아키텍처를 참조하세요.
x86 기반 프로세서의 플래그
x86 기반 프로세서는 플래그라고 하는 여러 1비트 레지스터도 사용합니다. 이러한 플래그 및 플래그를 보거나 변경하는 데 사용할 수 있는 구문에 대한 자세한 내용은 x86 플래그를 참조하세요.
레지스터 및 스레드
각 스레드에는 자체 레지스터 값이 있습니다. 이러한 값은 스레드가 실행 중일 때 CPU 레지스터에 저장되고 다른 스레드가 실행 중일 때 메모리에 저장됩니다.
사용자 모드에서 레지스터에 대한 참조는 현재 스레드와 연결된 레지스터로 해석됩니다. 현재 스레드에 대한 자세한 내용은 프로세스 및 스레드 제어를 참조하세요.
커널 모드에서 레지스터에 대한 모든 참조는 현재 레지스터 컨텍스트와 연결된 레지스터로 해석됩니다. 레지스터 컨텍스트를 특정 스레드, 컨텍스트 레코드 또는 트랩 프레임과 일치하도록 설정할 수 있습니다. 지정된 레지스터 컨텍스트에 대해 가장 중요한 레지스터만 표시할 수 있으며 해당 값을 변경할 수 없습니다.