본문 바로가기

Reversing/Study

Debug Register


디버그 레지스터는 프로그램 디버깅을 목적으로 프로세서에 의해 사용되는 레지스터로써 DR0~DR7까지 총 8개가 있습니다. 그 중 DR0~DR3까지 4개의 레지스터만 직접 사용이 가능합니다. 우리가 보통 하드웨어 브레이크 포인트를 4개 까지만 설정이 가능한 이유도 이와 같습니다. 그림으로 보면 

이렇게 볼 수 있습니다. 

그리고 나머지 DR4~DR7 까지 4개의 레지스터는 상태를 관리하기 위해 쓰입니다. 특별히 그 중 DR7레지스터는 Debug Control Register로 불리며 15비트부터 31비트까지 R/W 0~3의 비트가 있습니다. 이 비트들은 DR0~DR3 까지의 브레이크 포인트 속성과 관련 된 내용입니다. 각 비트는 두 개의 비트로 이루어져 있으며 각 의미를 보면

00 - 명령어가 실행 되었을 때
01 - 데이터에 쓰기를 하였을 때
10 - 예약
11 - 데이터에 읽기 또는 쓰기를 하였을 때

이렇게 구분하여 비트를 세팅합니다. 

DR6레지스터는 Debug Status Register로 불립니다. 

'Reversing > Study' 카테고리의 다른 글

PEview Patch  (0) 2016.02.01
Control Register  (0) 2015.10.18