IA-32 레지스터 메모.

Posted by Ho95

General Purpose Register (범용 레지스터 ,x86 cpu)

1
2
3
4
5
6
7
8
-상수, 주소값을 저장시 사용된다.

-16비트의 크기를 가진다.(과거에는 16비트를 한번에 쓸일이 없음)

-32비트 이상에서는 레지스터 앞에 확장이라는 뜻의 Extended(E)가
붙고 크기는 0~31비트를 차지하는 32비트이다. (EAX,EBX,ECX,EDX)

-ABCDX는 H,L로 나뉜다. 예를 들면 AX는 0~15, AH는 15~8, AL은 7~0

범용 레지스터의 종류(범용이기 때문에 다른 용도로 사용가능)

AX(Accumlatior Register)

1
-산술연산 명령에서 상수/변수값이나 함수의 리턴값을 저장.

BX(Base Register)

1
-메모리 위치(포인터)를 주로 저장한다. 인덱스에 사용하거나 인덱스 로 사용 가능하다.

CX(Counter Register)

1
-루프 명령어 사용시 루프 횟수를 지정하고 반복 작업을 수행한다.

DX(Data Resgister)

1
-레지스터에 저장될 데이터 값이 레지스터 용량을 초과하면 절반을 저장하는 레지스터.

SI(Source Index Register)

1
-원본 데이터의 주소를 저장한다.

DI(Destination Index Register)

1
-데이터를 보낼 목적지의 주소를 저장한다.

SP(Stack Pointer Register)

1
-현재 스택의 탑 주소가 저장된다. 스택의 끝 주소

BP(Base Pointer Register)

1
-스택의 시작 주소가 저장된다.

Segment Register(세그먼트 레지스터, 16bit)

1
-가상 메모리를 실제 물리 메모리와 맵핑시 사용 되는 레지스터.

세그먼트 레지스터의 종류

CS(Code Segment)

1
-프로그램(코드)의 시작 주소를 저장한다.

DS(Data Segment)

1
-현재 사용하는 데이터 영역의 시작 주소를 저장한다.

SS(Stack Segment)

1
-스택 영역의 시작 주소를 저장한다.

ES(Extra Segment)

1
-메모리 주소 지정을 다루는 스트링 연산에 사용된다. GS도 같은 역할

FS

1
-기타 영역의 시작 주소를 저장한다.

Special Propose Register(특수 목적 레지스터)

1
-직접 값을 읽고 쓸 수 없는 레지스터

특수 목적 레지스터의 종류

IP(Instruction Pointer Register)

1
-현재 수행할 (곧 수행될) 명령어의 주소가 저장됨. 32비트는 EIP

플래그 레지스터

1
-프로세서의 상태를 나타내는 레지스터

종류

CF(Carry Flag)

1
-부호가 없는 수의 오버플로 발생시 1로 set

ZF(Zero Flag)

1
-연산 명령후 결과값이 0일시 1(true)로 set

OF(Overflow Flag)

1
-부호가 있는 수의 오버플로 발생시 1로 set

끝~~~

2018-09-27 : md에 맞게 수정