x86 프로세서의 구조 - 4화
지난 시간에는, 주소공간과 IA-32 레지스터 에 대해서 알아보았습니다. X86 프로세서의 구조에 대해서 공부는
거의 필수이기 때문에 하루 포스팅을 못쓸때도 있지만 진도는 끝까지 나갈려고 합니다.
범용 레지스터
- 데이터와 주소 저장용으로 사용되는 32비트 레지스터(cf) x86의 레지스터는 범용
레지스터도 특수 용도를 갖고 있습니다.
- EAX (Extended Accumulator)
- EBX (Base)
- ECX (Count)
- EDX (Data)
- EBP (Base Pointer)
- ESP (Stack Pointer)
- ESI (Source Index)
- EDI (Destination Index)
범용 레지스터의 부분 접근
* 80386 이상에서 32 - bit로 확장됨
32 – bit |
16 – bit |
8 – bit (high) |
8 – bit (low) |
EAX |
AX |
AH |
AL |
EBX |
BX |
BH |
BL |
ECX |
CX |
CH |
CL |
EDX |
DX |
DH |
DL |
범용 레지스터의 특수 목적 사용
레지스터 |
특정한 용도 |
EAX, AX |
곱셈, 나눗셈, translate 연산용 accumlator 입출력 연산: 입출력 데이터 보관
|
EBX, BX |
루프 반복 횟수 보관(loop count) Shift 횟수 보관 (shift count)
|
EDX, DX |
입출력 연산: 포트주소 보관 곱셈, 나눗셈에서의 operand 보관
|
ESP, SP (stack pointer)
|
스택의 top 위치 주소를 보관
|
EBP, BP (base pouinter) |
스택의 데이터를 주소를 보관 (지역변수,매개변수) frame pointer 라고도 함
|
ESI,SI (source index) EDI, DI (dest, index)
|
메모리 블록 전송 명령어에서 사용 |