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)
DI(Destination Index Register)
SP(Stack Pointer Register)
1
| -현재 스택의 탑 주소가 저장된다. 스택의 끝 주소
|
BP(Base Pointer Register)
Segment Register(세그먼트 레지스터, 16bit)
1
| -가상 메모리를 실제 물리 메모리와 맵핑시 사용 되는 레지스터.
|
세그먼트 레지스터의 종류
CS(Code Segment)
DS(Data Segment)
1
| -현재 사용하는 데이터 영역의 시작 주소를 저장한다.
|
SS(Stack Segment)
ES(Extra Segment)
1
| -메모리 주소 지정을 다루는 스트링 연산에 사용된다. GS도 같은 역할
|
FS
Special Propose Register(특수 목적 레지스터)
특수 목적 레지스터의 종류
IP(Instruction Pointer Register)
1
| -현재 수행할 (곧 수행될) 명령어의 주소가 저장됨. 32비트는 EIP
|
플래그 레지스터
종류
CF(Carry Flag)
1
| -부호가 없는 수의 오버플로 발생시 1로 set
|
ZF(Zero Flag)
1
| -연산 명령후 결과값이 0일시 1(true)로 set
|
OF(Overflow Flag)
1
| -부호가 있는 수의 오버플로 발생시 1로 set
|
끝~~~
2018-09-27 : md에 맞게 수정