레지스터의 종류 - 범용 레지스터, 세그먼트 레지스터, 플래그 레지스터
System/Cybersecurity

레지스터의 종류 - 범용 레지스터, 세그먼트 레지스터, 플래그 레지스터



1. 범용 레지스터 (General Purpose Register)


  작은 데이터의 임시 저장 공간으로, 연산 처리 및 데이터의 주소를 지정하는 역할을 한다. 컴퓨터의 장치들을 제어하는 역할 또한 수행한다.


EAX

 산술 연산 및 논리 연산 수행

EBX

 메모리 주소 저장

ECX

 반복문 사용 시 반복 카운터로 사용

 반복할 횟수 지정하고 반복 작업 수행

EDX

 EAX 레지스터와 같이 쓰임

 부호 확장 명령 등에 사용

 큰 수의 곱셈 또는 나눗셈 연산

EDI

 복사할 때 목적지 주소 저장

ESI

 데이터를 조작하거나 복사할 때 데이터의 주소 저장

ESP

 메모리 스택의 끝 지점 주소 포인터

EBP

 메모리 스택의 첫 시작 주소 포인터

EIP

 다음에 실행해야 할 명령어의 주소 포인터




2. 세그먼트 레지스터 (Segment Register)


  세그먼트[각주:1]에 대한 주소 지정을 제공한다. PC 계열에서 사용되고 있는 인텔 프로세서들은 자신의 주소 지정 능력을 제공한다.


CS

 기계 명령을 포함한 코드 세그먼트의 시작 주소를 가리킴

DS

 프로그램에 정의된 데이터 세그먼트의 시작 주소를 가리킴

 데이터의 오프셋을 DS 레지스터에 저장된 주소 값에 더해 데이터 세그먼트 내에 위치해 있는 데이터의 주소를 참조

SS

 실행 과정에서 필요한 데이터나 연산 결과 등을 임시로 저장하거나 삭제할 때 사용하는 스택 세그먼트의 시작 주소를 가리킴

ES

 추가로 사용된 데이터 세그먼트의 주소를 가리킴

FS

 사용처 미정, 여분 레지스터

GS



3. 플래그 레지스터 (Flag Register)


  마이크로프로세서에서 다양한 산술 연산 결과의 상태를 알려주는 플래그 비트들을 저장한다. 조건문과 같은 실행 순서의 분기를 정할 때 주로 사용된다.


Z

 제로 플래그. 연산 결과가 0일 경우 참.

C

 캐리 플래그. 부호 없는 숫자의 연산 결과가 비트 범위를 넘어섰을 경우 참.

A

 보조 캐리 플래그. 연산 결과 하위 4bit에서 비트 범위를 넘어섰을 경우 참.

O

 오버플로우 플래그. 부호 있는 숫자의 연산 결과가 비트 범위를 넘어섰을 경우 참.

S

 사인 플래그. 연산 결과가 음수일 경우 참.

P

 패리티 플래그. 연산 결과에서 1로 된 비트의 수가 짝수일 경우 참.

D

 디렉션 플래그. 문자열 조작에서 참일 경우 주소 주소 레지스터 값이 감소, 거짓일 경우 증가.

T

 트랩 플래그. 참일 경우 한 명령이 실행될 때마다 인터럽트 발생. 디버깅에 사용.


  1. 세그먼트(Segment) : 프로그램에 정의된 특정 영역으로, 코드, 데이터, 그리고 스택을 포함한다. [본문으로]