31 16 | 15 8 | 8 7 | 7 0 |
EAX | AH | AX | AL |
EBX | BH | BX | BL |
ECX | CH | CX | CL |
EDX | DH | DX | DL |
EBP | BP | ||
ESP | SP | ||
ESI | SI | ||
EDI | DI |
AX : 어큐뮬레이터. 산술, 논리 연산의 중심이 되는 레지스터이며, Input/Output 포트의 입출력 명령
BX : 간접 번지 지정 시 번지 레지스터. 베이스 레지스터로 주로 사용
CX : 루프와 같이 어떤 명령을 반복적으로 수행하고자 할때 반복 횟수를 지정하는데 주로 사용
DX : 간접 번지 지정에 의한 입출력 명령을 실행할때 번지 지정에 사용된다.
곱셉 , 나눗셈을 할때에는 보조 어큐뮬레이터로 사용
SI , DI : 다른 범용 레지스터의 마찬가지로 연산과 간접 번지 지정에 사용된다.
그밖에 문자열의 전송이나 비교 등을 하는 스트링 명령에서 SI는 source가 되는 문자열을 나타내고
DI는 destination이 되는 문자열의 번지를 표시하는데 사용
EAX : 누산기 레지스터, 대부분의 입출력 및 산술, 논리 연산에 사용된다.
그뿐 아니라 리턴값, 인터럽트 번호 지정시 자동으로 사용
EBX : 주로 주소 지정을 확장 할때 사용 되거나 초기 주소 지정 등을 위해 사용된다. 이때 오프셋 주소가 되어
SI, DI 레지스터와 결합되어 사용
ECX : 카운트 레지스터, 어떤 명령을 반복 수행할 경우 횟수를 지정하는데 사용된다.
내부적으로 이 값을 루프 수 만큼 저장 했다가 1씩 감소 시켜 0이 되면 EFlags의 ZF를 셋팅 시켜 루프를 종료
EDX : 데이터 레지스터, EAX 의 보조 누산기로 주로 사용되어 입출력 연산시 간접 주소 지정 연산
ESI : 연산 및 간접 주소 연산에 주로 사용되며 문자열 처리 시 자주 사용된다.
보호 모드에서의 새로 등장한 레지스터
IOPL(I/O 특권 수준) : 2bit로 구성된 이 보호모드 제어비트는 I/O 명령어를 실행하는데
필요한 현재의 특권 수준(0~3)까지를 나타 낸다.
NT(내포 태스크 플래그) : 이 상태 플래그는 보호 모드에서 현재 태스크가 다른 태스크에 의해 호출되었음을
나타내는 데 사용되어지며, 내포 태스크가 끝났을 때 리턴 명령어의 형태에 영향을 미친다.
RF(재시작 플래그) : 이 플래그는 디버그 레지스터와 함께 사용되어 이 플래그가 세트 되면 디버그 Fault를 무시하고
다음 명령어가 실행되도록 한다.
VM(가상모드) : 이 플래그는 프로세서를 가상 8086 모드로 전환 시키는데 사용 되는 보호 모드 제어 플래그
시스템 레지스터 중 CR0 , CR2 , CR3는 제어 레지스터
CR0 : 페이징 매커니즘의 활성화, 태스크 전환의 감시, 보조 프로세서의 에뮬레이션, 보호모드 선택에 사용
CR2 : 페이지 폴트 시에 마지막 명령어의 주소를 가르키고 있다.
CR3 : 페이지 디렉토리의 베이스 주소를 가지고 있다.
CR0 레지스터의 필드들
PE : 이 비트는 EFLAGS 의 VM 비트와 비슷하며, 이비트가 세트되어 있으면 보호모드로 그렇지 않으면 실제모드
MP : 이 비트는 산술 보조 프로세스가 존재하는지를 나타내는 비트
EM : 이 비트는 프로세서가 부동 소수점 유닛을 가지고 있지 않을때 세트 되며 이 비트가 세트된 상태에서 부동 소수점
에 대한 연산이 수행될 경우 인터럽트 11번이 발생하여 인터럽트 핸들러에서 부동 소수점에 대한 연산을
소프트웨어적으로 구현할수 있도록 해준다.
TS : 이 비트는 태스크 스위칭이 일어날때마다 프로세서가 자동적으로 세트해 주며, 프로세서에 의하여 자동적으로
클리어되지는 않으며, 사용자는 CLTS 명령어로 이 비트를 클리어 해줄수있다.
ET : 이 비트는 산술 보조 프로세서가 80387인지를 나타내는 비트
PG : 이 비트는 프로세서의 페이징 메모리 매니저먼트 유니트(MMU)를 활성화할것인지 아닌지를 나타내는 비트
이 비트가 세트되어 있으면 페이징 시스템으로 작동
CR2
이 레지스터는 읽기 전용 레지스터로 페이지 부재가 발생하여 인터럽트 14번이 발생했을 때 어떤 주소에서 페이지 부재가
발생했는지 주소를 저장해 주는 레지스터
CR3
이 레지스터는 페이지 디렉토리의 베이스 어드레스를 저장해 주는 레지스터로 CR0 레지스터의 PG 비트가 세트되어
페이징 시스템으로 작동되어질때 사용됨
'Soft Ware > Windows 구조와 원리' 카테고리의 다른 글
함수 호출 (0) | 2011.11.16 |
---|---|
복귀 주소가 가지는 특징 (0) | 2011.11.16 |
Windows 구조와 원리 (0) | 2011.11.16 |
뮤텍스와 세마포어 (0) | 2011.11.13 |
세그먼트 (0) | 2011.11.09 |