레지스터

CPU 내부의 작은 임시저장장치이며 CPU가 접근하기에 가장 빠르다.

프로그램 관련 명령어와 데이터는 실행 전후로 레지스터에 저장된다. 창고같은 역할을 한다.

 

 

레지스터의 종류

  • 프로그램 카운터 : 메모리에서 가져올 명령어의 주소
  • 명령어 레지스터 : 해석할 명령어, 방금 메모리에서 읽어들인 명령어
  • 메모리 주소 레지스터 : CPU가 정보를 데이터버스로 주고받을 때 거치는 레지스터
  • 메모리 버퍼 레지스터 : 메모리와 주고받을 값 (데이터 & 명령어)
  • 플래그 레지스터 :  연산 결과 혹은 CPU 상태에 대한 부가적인 정보
  • 범용 레지스터 : 다양하고 일반적인 상황에서 사용할 수 있는 레지스터 범용적인 용도이다.
  • 스택 포인터 : 스택의 가장 상단을 가르키는 레지스터 (스택이 어디까지 차있는지)
  • 베이스 레지스터 : 변위 주소 지정 방식에서 사용되는 레지스터

 

데이터의 이동흐름 :   프로그램 카운터 -> 메모리 주소 레지스터 -> 메모리 버퍼 레지스터 (다음으로 실행할 명령어를 가져와 프로그램 카운터가 증가한다. 이것이 프로그램의 순차적 실행에 근간이 된다.) -> 명령어 레지스터

 

 

변위 주소 지정 방식 

오퍼랜드 필드의 값과 특정 레지스터의 값을 더하여 유효 주소를 얻는다.

 

 

여기서 특정 레지스터는 프로그램 카운터와 베이스 레지스터가 있다.

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

여기서 베이스 레지스터에는 기준 주소가 담긴다.

EX: 베이스레지스터에 100 이 담기고 오퍼랜드에 50이 담겼다면 "기준 주소 100번지로부터 50만큼 떨어진 코드를 실행"

 

 

출처 : https://www.youtube.com/watch?v=fSCHizcezTs&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=12

 

+ Recent posts