퍼온글 : 출처 http://prodev.springnote.com/pages/5819239
- 범용 레지스터
32bit 컴퓨터 환경이 되면서 16bit 레지스터인 AX, BX, CX, DX등의 레지스터를 32bit로 확정한 것으로 첫 글자가 Extended로 시작
범용 레지스터는 32bit, 16bit, 8bit로 사용할 수 있다. EAX 레지스터를 예로 들면 32bit는 EAX, 16bit는 AX, 8bit는 AH, AL로 사용할 수 있다.
32 bit |
16 bit |
상위 8 bit |
하위 8 bit |
EAX |
AX |
AH |
AL |
EBX |
BX |
BH |
BL |
ECX |
CX |
CH |
CL |
EDX |
DX |
DH |
DL |
ESI |
SI |
|
|
EDI |
DI |
|
|
EBP |
BP |
|
|
ESP |
SP |
|
|
-
EAX(Extended Accumulator Register)
- 곱셈과 나눗셈 명령에서 자동으로 사용
- 함수의 리턴값이 저장되는 용도로도 사용
- 변환 명령시 사용
- 입출력과 거의 모든 산술 연산에 사용
-
EDX(Extended Data Register)
- EAX와 같이 쓰이며 부호 확장 명령 등에 사용
- 몇몇 입출력 동작에서 사용
-
EBX(Extended Base Register)
- ESI나 EDI와 결합하여 인덱스에 사용
- 주소지정을 확대하기 위한 인덱스
- 일반적인 계산 용도로도 사용
-
ESI(Extended Source Index)
- 데이터 복사나 조작시 Source Data의 주소가 저장
- ESI 레지스터가 가리키는 주소의 데이터를 EDI 레지스터가 가리키는 주소로 복사하는 용도로 많이 사용
-
EDI(Extended Destination Index)
- 데이터 복사나 조작시 Destination의 주소가 저장
- 주로 ESI 레지스터가 가리키는 주소의 데이터가 복사될 곳의 주소
-
ECX(Extended Counter Register)
- 반복 명령어 사용시 반복 카운터로 사용
- ECX 레지스터에 반복할 횟수를 지정해 놓고 반복 작업을 수행
- 좌우방향의 쉬프트 비트 수 기억
- 그 외의 계산에도 사용
-
ESP(Extended Stack Pointer)
- 하나의 스택 프레임의 끝 지점 주소 저장
- PUSH, POP 명령어에 따라서 ESP의 값이 4Byte씩 변함
-
EBP(Extneded Base Pointer)
- 하나의 스택 프레임의 시작 지점 주소 저장
- 현재 사용되는 스택 프레임이 소멸되지 않는 동안 EBP의 값은 불변
- 현재의 스택 프레임이 소멸되면 이전에 사용되던 스택 프레임을 가리키게 된다.
세그먼트 레지스터
-
CS(Code Segment)
- 실행 가능한 명령어가 존재하는 세그먼트의 오프셋 저장
-
DS(Data Segment)
- 프로그램에서 사용되는 데이터가 존재하는 세그먼트의 오프셋 저장
-
SS(Stack Segment)
- 스택이 존재하는 세그먼트의 오프셋 저장
상태 플래그 레지스터
-
CF(Carry Flag)
- 부호 없는 연산 결과가 용량보다 클 때 세트(1) 된다.
-
ZF(Zero Flag)
- 연산 결과가 0일 때 세트(1) 된다. 연산 결과가 0이 아닐 때 해제(0) 된다.
-
OF(Overflow Flag)
- 부호 있는 연산 결과가 용량보다 클 때 세트(1) 된다.
-
SF(Sign Flag)
- 연산 결과가 음수가 되었을 때 세트(1) 된다. 연산 결과가 양수가 되었을 때 해제(0) 된다.
-
DF(Direction Flag)
- 문자열 처리에서 연속되는 문자열의 처리 방향에 따라 세트(1) 된다.
-
TF(Trap Flag)
- 프로세스가 단일 스텝 모드(single-step mode)를 동작할 수 있도록 해 준다.
명령 포인터 레지스터
-
EIP(Extended Instruction Pointer)
- 다음에 실행해야 할 명령어가 존재하는 메모리 주소가 저장
- 현재 명령어를 실행 완료한 후에 EIP 레지스터에 저장되어 있는 주소에 위치한 명령어를 실행하게 된다.
- 실행 전 EIP 레지스터에는 다음 실행햐야 할 명령어가 존재하는 주소의 값이 저장된다.
부동 소수점 데이터 레지스터
- ST(0), ST(1), ST(2), ST(3), ST(4), ST(5), ST(6), ST(7)
'일 > 프로그래밍' 카테고리의 다른 글
2010.08.14 thread quantum (0) | 2010.08.15 |
---|---|
[ I/O ] [퍼온글] Overlapped IO 와 IOCP (2) (0) | 2010.06.21 |
[ I/O ] [퍼온글] Overlapped IO 와 IOCP (1) (0) | 2010.06.21 |
[ IPC ] memory-mapped file 관련 (0) | 2010.06.19 |
[퍼온글]프레임워크란? (0) | 2009.01.10 |