CPU가 프로세스를 실행하기 위해서는 프로세스를 CPU에 적재시켜야 할 것이다.
그리고 흩어져 있는 명령어집합과 데이터들을 적절하게 집어내고 읽고 저장하기 위해서는 여러가지 저장 공간이 필요하다.
또 CPU가 재빨리 읽고 쓰기를 해야 하는 데이터들이므로 CPU 내부에 존재하는 메모리를 사용한다.
그 공간을 레지스터(Register)라고 한다.
<일반적인 시스템의 프로그램 레지스터의 구조>
레지스터는 목적에따라 분류가 나뉜다.
범용 레지스터 : 논리 연산, 수리 연산에 사용되는 피연산자, 주소를 계산하는데 사용되는 피연산자, 그리고 메모리 포인터가 저장되는 레지스터다.
세그먼트 레지스터 : code segment, data segment, stack segment를 가르키는 주소가 들어가 있는 레지스터다.
플래그 레지스터 : 프로그램의 현재 상태나 조전등을 검사하는데 사용되는 플래그들이 있는 레지스터다.
인스트럭션 포인터 : 다음 수행해야 하는 명령(instruction)이 있는 메모리 상의 주소가 들어가 있는 레지스터다.
[범용 레지스터]
범용 레지스터는 프로그래머가 임의로 조작할 수 있게 허용되어 있는 레지스터다.
일종의 4개의 32bit 변수라고 생각하면 된다.
예전의 16bit를 사용할 때는 각 레지스터를 AX, BX, CX, ... 등으로 불렀지만
32bit 시스템으로 전환되면서 E(Extended)가 붙어 EAX 등으로 불린다.
AX 레지스터의 상위 부분을 AH라고 하고 하위 부분을 AL이라고 한다.
[범용 레지스터 - 각 레지스터의 목적]
EAX - 피연산자와 연산 결과의 저장소
EBX - DS segment안의 데이터를 가리키는 포인터
ECX - 문자열 처리나 루프를 위한 카운터
EDX - I/O 포인터
ESI - DS 레지스터가 가리키는 data segment 내의 어느 데이터를 가리키고 있는 포인터.
문자열 처리에서 source를 가리킴
EDI - ES 레지스터가 가리키고 있는 data segment 내의 어느 데이터를 가리키고 있는 포인 터. 문자열 처리에서 destination을 가리킴
ESP - SS 레지스터가 가리키는 stack segment의 맨 꼭대기를 가리키는 포인터
EBP - SS 레지스터가 가리키는 스택상의 한 데이터를 가리키는 포인터.
[세그먼트 레지스터]
'기타 > 달고나 문서' 카테고리의 다른 글
8086 Memory Architecture & 8086 CPU 레지스터 구조 (0) | 2015.02.19 |
---|
댓글