컨트롤 레지스터란 운영체제의 운영 모드를 변경하고 현재 운영 중인 모드의 기능을 제어하는 레지스터이다. CR0, CR1, CR2, CR3, CR4 이렇게 다섯 개의 레지스터가 존재한다. 전체적인 부분을 그림으로 보면
그리고
이렇게 나눌 수 있다. 각 레지스터들을 기능을 나누어 설명하면
CR0 - 운영모드를 제어하는 레지스터
PE - Protection Enable (보호모드와 리얼모드 설정)
MP - Monitor Coprocessor (wait, fwait 명령시 TS필드의 참조 여부)
EM - Emulation (FPU가 내장되었는지 여부 설정)
TS - Task Switched (FPU명령 사용시 예외 설정 여부)
ET - Extension Type (1로 예약되어있음)
NE - Numeric Error (FPU에러를 내부 예외와 외부 인터럽트 연결 설정)
WP - Write Protect (쓰기 금지 기능 사용 여부)
AM - Alignment Mask (어드레스 정렬 사용 검사 기능 사용 여부)
NW - Not Write-through (캐시 정책중 write-through 사용 여부)
CD - Cache Disable (프로세서의 캐시 사용 여부)
PG - Paging (페이징 사용 여부)
PE비트의 역할이 가장 크고 그 외에 WP, CD, PG 비트의 역할이 중요하다. 운영체제를 공부할 때 아주 중요한 레지스터이다.
CR1 - 프로세서에 의해 예약된 레지스터
CR2 - 페이지 폴트를 유발시긴 선형 주소를 담고 있는 레지스터
CR3 - 페이지 디렉터리의 물리 주소와 페이지 캐시에 관련된 기능을 설정하는 레지스터
CR4 - 프로세서에서 지원하는 각종 확장된 각종 확장 기능을 제어하는 레지스터, 대체로 하드웨어 가상화 설정을 제어한다.
VME - Virtual 8086 Mode Extensions (Virtual-8086 mode에서의 Virtual Interrupt Flag (VIF)) 사용 여부)
PVI - Protected-mode Virtual Interrupts (Protected mode에서의 Virtual Interrupt Flag (VIF)) 사용 여부)
TSD - Time Stamp Disable (RDTSC명령어의 사용 권한 설정(커널 or 유저))
DE - Debugging Extensions (I/O 공간에 접근했을때 디버그 레지스터에 브레이크 여부)
PSE - Page Size Extension (페이지 크기 조절)
PAE - Physical Address Extension (페이지 테이블 레이아웃의 확장된 36비트 물리 주소로의 전환 여부)
MCE - Machine Check Exception (기계 검사 인터럽트의 발생 여부)
PGE - Page Global Enabled (주소 변환시 주소 공간 공유 여부)
PCE - Performance-Monitoring Counter enable (RDPMC명령어의 사용 권한 설정(커널 or 유저))
OSFXSR - Operating system support for FXSAVE and FXRSTOR instructions (SSE명령어셋의 사용 여부)
OSXMMEXCPT - Operating System Support for Unmasked SIMD Floating-Point Exceptions (SSE예외 처리 여부)
VMXE - Virtual Machine Extensions Enable (가상화 설정 여부, Intel VT-x 참고)
SMXE - Safer Mode Extensions Enable (안전 모드 설정 여부, Trusted Execution Technology (TXT) 참고)
FSGSBASE - Enables the instructions RDFSBASE, RDGSBASE, WRFSBASE, and WRGSBASE
PCIDE - PCID Enable (Process-Context IDentifiers(PCIDs) 사용 여부)
OSXSAVE - XSAVE and Processor Extended States Enable
SMEP - Supervisor Mode Execution Protection Enable (유저 모드에서의 오류의 실행 여부)
SMAP - Supervisor Mode Access Protection Enable (유저 모드에서의 오류의 접근 여부)
PKE - Protection Key Enable (Intel® 64 and IA-32 Architectures Software Developer’s Manual을 보세요)
CR4는 제가 원문 보고 발번역 해서 해석에 약간 문제가 있을 수도 있습니다...ㅠㅠ
참고자료
https://en.wikipedia.org/wiki/Control_register
http://kin.naver.com/open100/detail.nhn?d1id=1&dirId=101&docId=213330&qb=Y3I0IHJlZ2lzdGVy&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0
http://s2kiess.blog.me/220269836052
http://s2kiess.blog.me/220228581865
'Reversing > Study' 카테고리의 다른 글
PEview Patch (0) | 2016.02.01 |
---|---|
Debug Register (0) | 2015.10.19 |