본문 바로가기
컴퓨터공학

7. 레지스터

by 이면지91 2024. 10. 2.

레지스터는 CPU 내부의 작은 임시저장장치이다. 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장된다.

 

프로그래머 입장에서 중요한 장치이다. 왜냐하면 개발하고 실행하는 과정에서 레지스터에 담긴 값들을 관찰하면서 기초적인 단계에서부터 실행되는 순서나 원리를 파악할 수 있기 때문이다.

 

레지스터의 종류

 

레지스터의 종류는 CPU마다 다르지만 학습을 위해 대부분의 전공서와 CPU가 공통적으로 포함하고 있는 레지스터는 아래와 같다.

 

  1. 프로그램 카운터 : 메모리에서 가져올 명령어의 주소(메모리에서 읽어 들일 명령어의 주소)
    *행동이 끝나면 순차적으로 진행하기 위해 기존의 값에서 1증가한다.
  2. 명령어 레지스터 : 해석할 명령어(방금 메모리에서 읽어 들인 명령어)
  3. 메모리 주소 레지스터 : 메모리의 주소
  4. 메모리 버퍼 레지스터 : 메모리와 주고받을 값(CPU가 정보를 데이터 버스로 주고받을 때 거치는 레지스터)
  5. 플래그 레지스터 : 연산 결과 또는 CPU 상태에 대한 부가적인 정보
  6. 범용 레지스터 : 다양하고 일반적인 상황에서 자유롭게 사용
  7. 스택 레지스터 : 주소 지정에 사용
  8. 베이스 레지스터 : 주소지정에 사용

순차적인 실행 흐름이 끊기는 경우

  • 특정 메모리 주소로 실행 흐름을 이동하는 명령어 실행 시(e.g. JUMP, CONDITION JUMP, CALL, RET)
  • 인터럽트 발생 시
  • ETC...

 

특정 레지스터를 이용한 주소 지정 방식

  • 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식
  • 스택포인터 : 스택의 꼭대기를 가리키는 레지스터(스택이 어디까지 차 있는지에 대한 표시)

스택 포인터

 

  • 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소 얻기
    특정 레지스터=프로그램 카운터, 베이스 레지스터
    - 상대 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 프로그램 카운터의 값을 더하여 유효 주소 얻기
    - 베이스 레지스터 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 베이스 레지스터의 값을 더하여 유효 주소 얻기