본문 바로가기

[+] Information/[-] System

CPU 레지스터 설명

일단 레지스터가 무엇인지부터 알아야겠죠?(CPU는 알고있다는 가정하에...)

레지스터 : 산술/연산적 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 CPU 내부의 기억장치.



이제부터 레지스터 종류에 대해서 알아 봅시다.


범용 레지스터 : 계산 결과 임시저장, 산술 및 연산 등에 사용 되는 레지스터.

 AX(AH, AL) 산술 연산에 주로 사용된다. 
 BX(BH, BL) 베이스의 주소를 저장하는데 사용
 CX(CH, CL) 반복적으로 실행되는 특정 명령에 사용
 DX(DH, DL) 일반 자료를 저장하는데 사용.
※참고 : ()안에 있는 것들은 16bit를 쪼개놓은 8bit 레지스터들 이다.



세그먼트 레지스터 : 세그먼트라고 하는 메모리의 한 영역에 대한 주소 공간을 제공한다.
 DS(Data Segment Register) DS의 시작 주소를 담고 있다.
 ES(Extra Segment Register) 메모리 주소지정을 다루는 스트링 연산에 사용.
DI 레지스터와 관계 있으며, DS 레지스터의 확장 세그먼트로 사용 가능.
 SS(Stack Segment Register) 스택의 베이스 주소 저장.
 CS(Code Segment Register) 명령어 코드의 베이스 주소 저장.
※참고 : 32bit로 넘어오면서 FS, GS레지스터가 추가되었지만 따로 설명을 하지 않겠다.(여분의 세그먼트라고 기억해 두자.)



포인터 레지스터(오프셋 레지스터)
 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