관리 메뉴

c0smicb0y

범용 CPU 레지스터 본문

프로그래밍/컴퓨터구조

범용 CPU 레지스터

2015. 10. 29. 01:57

레지스터는 CPU의 작은 저장 공간으로 CPU가 데이터에 접근하는 가장 빠른 방법을 제공한다.

x86 명령 셋에서 CPU는 8개의 범용 레지스터(EAX, EDX, ECX, ESI, EDI, EBP, ESP, EBX)를 사용한다.


EAX는 accumlator regiter라고 불리며, 산술 연산을 수행하기 위해 사용 된다. x86 명령 셋에서 최적화된 많은 명령이 데이터 계산과 저장을 위해 EAX 레지스터를 사용하도록 설계되었다. 또한 EAX 레지스터는 함수의 리턴 값을 저장하므로 EAX에 저장된 값을 조사하면 호출한 함수가 어떤 리턴 값을 가지는 지 알 수 있다.


EDX 레지스터는 Data register이다. 이 레지스터는 기본적으로 EAX 레지스터의 확장 개념으로 사용된다. 즉, 나누기나 곱하기 같은 복잡한 연산을 위해 추가적으로 데이터를 저장할 때 사용된다.


ECX 레지스터는 Counter register라 불리며, 반복적으로 수행되는 연산에 주로 사용된다. ECX 레지스터는 무조건 카운트를 세는 것이 아니라 감소시키면서 카운트를 센다.


x86 어셈블리 언어에서 데이터를 처리하는 반복문에서는 효과적으로 데이터를 처리하기 위해 ESI 레지스터와 EDI 레지스터를 사용한다. ESI 레지스터는 데이터 연산을 위한 Source index를 나타내거나 입력 데이터 스트림의 위치를 나타내기 위해 사용된다. EDI 레지스터는 데이터 연산의 Destination index를 나타내거나 데이터 연산의 결과가 저장되는 위치를 나타내는데 사용된다. ESI는 읽기 위해 사용되고 EDI 레지스터는 쓰기 위해 사용된다고 생각하면 된다.


ESP 레지스터와 EBP 레지스터는 Stack pointer와 Base pointer 레지스터이다. 스택을 다루기 위해 사용된다.


EBX 레지스터는 특별한 목적으로 설계된 레지스터가 아니라서, 추가적인 저장소로 이 레지스터를 사용한다.


EIP 레지스터는 현재 실행 중인 명령의 주소를 가리킨다.

Comments