일/프로그래밍

CPU 레지스터

푸른st 2010. 8. 5. 22:39

퍼온글 : 출처 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)