Reversing/Study

Control Register

5unKn0wn 2015. 10. 18. 18:33


컨트롤 레지스터란 운영체제의 운영 모드를 변경하고 현재 운영 중인 모드의 기능을 제어하는 레지스터이다. 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에서의 V
irtual 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&section=kin&rank=1&search_sort=0&spq=0
http://s2kiess.blog.me/220269836052
http://s2kiess.blog.me/220228581865