y0u_bat

[64비트멀티코어OS] 3.2 레지스터 본문

OS

[64비트멀티코어OS] 3.2 레지스터

유뱃 2016. 2. 21. 18:19


레지스터 - 범용 레지스터, 세그먼트 레지스터, 컨트롤 레지스터 3가지


64비트 경우

범용  세그먼트   컨트롤

RAX   CS           CR0

RBX   DS           CR1

RCX   ES           CR2

RDX   FS           CR3

RSI     GS          CR4

RDI

RSP

RBP

R8~R15


AX - 산술 연산을 수해할때 누산기로 사용

BX - 데이터의 어드레스를 지정할때 데이터 포인터로 사용

CX - 반복문 또는 문자열의 카운터로 사용

DX - I/O 어드레스를 지정할때 사용하며, 산술연살을 수행할대보조 레지스터로 사용 




세그먼트 레지스터 역할

CS - 코드영역 가르킴

     - 데이터 이동명령으로 값변경 불가능, 점프명령이나 인터럽트 관련 명령으로 변겨가능

DS - 데이터 영역 가르킴

     - 데이터 이동명령으로 값 변경 가능

     - 데이터 영역에 접근할때 임시적으로 사용

 ES - 문자열과 관련된 작업 처리 할때 임시적으로 사용됨

 SS - 스택영역을 가르킴

      - 데이터 이동명령으로 값 변경 가능

      - 스택관련 레지스터를 통해 스택에 접근할때 임시적으로 사용



컨트롤 레지스터 - 운영모드 변경하고 현재운영모드의 특정기능 제어하는 레지스터

x86 - CR0 CR1 CR2 CR3 CR4 

x64 - CR0 CR1 CR2 CR3 CR4 CR8


CR0 - 운영모드 제어

- 리얼모드에서 보호모드 전환하는 역할과 캐시, 페이지기능 등 활성

CR1  - 프로세스에 의해 예약된 레지스터

CR2 - 페이지 폴트 발생시, 발생한 선형주소가 저장되는 레지스터

- 페이징 기법을 활성화한 후에는 페이지 폴트 발생시 유효한 값을 가짐

CR3 - 페이지 디렉터리의 물리주소와 캐시에 관련된 기능을 설정하는 레지스터

CR4 - 프로세스에 지원하는 각종 확장기능 제어 레지스터

- 페이지 크기 확장이나 메모리 영역 확장 등의 기능을 활성화시킴

CR8 - 태스크 우선순위 레지스터의 값을 제어하는 레지스터

- 프로세스 외부에서 발생하는 인터럽터를 걸러주는 역할, IA32에서만 접근가능



Comments