일단 레지스터가 무엇인지부터 알아야겠죠?(CPU는 알고있다는 가정하에...)
레지스터 : 산술/연산적 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 CPU 내부의 기억장치.
이제부터 레지스터 종류에 대해서 알아 봅시다.
범용 레지스터 : 계산 결과 임시저장, 산술 및 연산 등에 사용 되는 레지스터.
AX(AH, AL) | 산술 연산에 주로 사용된다. |
BX(BH, BL) | 베이스의 주소를 저장하는데 사용 |
CX(CH, CL) | 반복적으로 실행되는 특정 명령에 사용 |
DX(DH, DL) | 일반 자료를 저장하는데 사용. |
세그먼트 레지스터 : 세그먼트라고 하는 메모리의 한 영역에 대한 주소 공간을 제공한다.
DS(Data Segment Register) | DS의 시작 주소를 담고 있다. |
ES(Extra Segment Register) | 메모리 주소지정을 다루는 스트링 연산에 사용. DI 레지스터와 관계 있으며, DS 레지스터의 확장 세그먼트로 사용 가능. |
SS(Stack Segment Register) | 스택의 베이스 주소 저장. |
CS(Code Segment Register) | 명령어 코드의 베이스 주소 저장. |
포인터 레지스터(오프셋 레지스터)
BP(Base Pointer) | SS 레지스터와 함께 사용되어 스택 내부의 변수 값을 읽는데 사용. |
IP(Instruction Pointer) | 다음 명령어의 오프셋(offset)을 저장하며, CS 레지스터와 합해져 다음에 수행될 명렁어의 주소를 형성한다 |
SP(Stack Pointer) | SS 레지스터와 함께 사용되며 스택의 가장 끝 주소를 가리킨다. PUSH, POP 시에 4byte씩 변화한다. |
인덱스 레지스터 : 인덱스 주소지정과 덧셈 뺄셈에 사용됨.
DI(Destination Index) | 다음 목적지의 주소를 담고 있다. |
SI(Source Index) | 출발지 주소에 대한 값을 담고 있다. |
※참고 : 앞서 설명한 레지스터들은 16bit를 기준으로 설명되어있다. 최근 문서등을 보면 EBP, ESP등이 나올텐데 앞에 E는 'Extended'라는 의미를 표현한다. EBP, ESP등은 32bit 레지스터이며 하는 기능은 거의 유사하다.
플래그 레지스터 : 컴퓨터의 행동과 상태를 나타내는 레지스터.
플래그 레지스터는 제가 아직 공부를 못해서... 다음에 공부하면 추가하도록 하겠습니다 ㅎㅎ
'[+] Information > [-] System' 카테고리의 다른 글
Zend Decoding (8) | 2009.10.04 |
---|---|
메모리 구조 그림. (2) | 2009.09.27 |
운영체제별 passwd, shadow 파일 위치. (0) | 2009.09.11 |
리눅스/유닉스 인증 관련 메모. (0) | 2009.09.11 |