y0u_bat
[OS-3] 레지스터 본문
OS-3 레지스터
레지스터
종류
- AX,BX,CX,DX,SI,DI,SP,BP,R8~R15 - 범용 레지스터
- CS,DS,ES,FS,GS - 세그먼트 레지스터
- CR0,CR1,CR2,CR3,CR4 - 컨트롤 레지스터
범용 레지스터 역할
- AX - 산술 연산을 수행할때 누산기로 사용
- BX - 데이터의 어드레스를 지정할때 데이터 포인터로 사용
- CX - 루프문 or 문자열 카운터로 사용
- DX - I/O 어드레스를 지정할때 사용, 산술연산을 수행할때 보조 레지스터로 사용
- SI - 문자열에 관련된 작업을 수행할때 원본 문자열의 인덱스로 사용
- DI - 문자열에 관련된 작업을 수행할때 목적지 문자열의 인덱스로 사용
- SP - 스택의 포인터로 사용
- BP - 스택의 데이터에 접근할때 데이터의 포인터로 사용
- R8~R15 - x86-64 프로세스에서 추가된 범용 레지스터로 다양한 용도로 사용
세그먼트 레지스터 역할
목적에 따라 주소 공간을 구분하는것이다. 주소공간을 구분하는 방법은 메모리관리 기법과 깊은 관계가 있다.
세그먼트 레지스터 종류
- CS - 코드 영역을 가르키는 레지스터, 데이터 이동 명령으로 값 변경 불가능, 점프명령이나 인터럽터 관련 명령어로 변경가능
- DS/ES/FS - 데이터 영역을 가르키는 레지스터, 데이터 이동명령으로 값 변경 가능
- DS - 데이터 영역에 접근할 때 임시적으로 사용한다
- ES - 문자열과 관련된 작업을 처리할 때 암시적으로 사용된다.
- DS외 데이터 영역에 접근하면, 세그먼트 레지스터 접두사 사용해야된다.
- SS - 스택 영역을 가르키는 레지스터,데이터 이동명령으로 값 변견가능,스택 관련 레지스터를 통해 접근할 때 암시적으로 사용됨.
컨트롤 레지스터 역할
현재 운영중인 모드의 특정 기능을 제어하는 레지스터이다.
컨트롤 레지스터 종류
- CR0 - 운영모드를 제어하며, 리얼모드->보호모드 전환 역할하며, 캐시 페이징 기능 활성화를 시킨다.
- CR1 - 프로세스에 의해 예약된 레지스터
- CR2 - 페이지 폴트 발생시 페이지 폴트 발생한 선형 주소가 저장되는 레지스터이며,페이징 활성화 후에는 페이지 폴트 발생 시만 유효한 값을 가진다.
- CR3 - 페이지 디렉터리의 물리 주소와 페이지 캐시에 관련된 기능을 설정하는 레지스터이다.
- CR4 - 프로세스에서 지원하는 각종 확장 기능을 제어 하는 레지스터이며, 페이지 크기 확장이나 메모리 영역 확장 등의 기능을 활성화 시킨다.
- CR8 - 태스크 우선순위 레지스터의 값을 제어하며, 프로세스 외부에서 발생하는 인터럽트를 걸어주는 필터의 역할을 한다. 그리고 IA-32e 모드에서만 접근 가능하다.
IA-32e 64bit 확장시 CR0,CR4,CR8 레지스터 64bit중 상위32bit를 0으로 설정 해야된다. CR2는 64비트영역 모두 사용가능하며, CR3는 비트40~51까지 모두 0으로 설정 해야된다.
'OS > Project' 카테고리의 다른 글
[OS-6] OS 이미지 로딩 (0) | 2016.11.03 |
---|---|
[OS-4] 운영모드와 메모리 관리 기법 (0) | 2016.10.14 |
[OS-2] 운영모드 (0) | 2016.10.12 |
[OS-1] Mac OSX에서 환경구축 (0) | 2016.10.12 |
Comments