728x90
반응형
SMALL

들어가며

레지스터는 CPU 내부의 작은 임시저장장치

프로그램 속 명령어 & 데이터는 실행 전후로 레지스터에 저장

 

CPU 내부에는 다양한 레지스터들이 있고, 각기 다른 역할을 가진다

 

 

반드시 알아야 할 레지스터

1. 프로그램 카운터 : 메모리에서 가져올 명령어의 주소(메모리에서 읽어 들일 명령어의 주소) - Instruction Pointer (명령어 포인터) 라고 부르는 CPU도 있다.

2. 명령어 레지스터 : 해석할 명령어 (방금 메모리에서 읽어 들일 명령어) - 제어장치가 해석

3. 메모리 주소 레지스터 : 메모리의 주소를 저장 - CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터

4. 메모리 버퍼 레지스터 : 메모리와 주고받을 값 (데이터와 명령어) - CPU가 정보를 데이터 버스로 주고받을 때 거치는 레지스터

5. 플래그 레지스터 : 연산 결과 또는 CPU 상태에 대한 부가적인 정보

6. 범용 레지스터 : 다양하고 일반적인 상황에서 자유롭게 사용

7. 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터로서 스택이 어디까지 차 있는지에 대한 표시

8. 베이스 레지스터 : 기준 주소 저장

 

* 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식

* 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소 얻기

* 상대 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 프로그램 카운터의 값을 더하여 유효 주소 얻기

* 베이스 레지스터 지정 방식 : 오퍼랜드 필드의 값(변위)과 베이스 레지스터의 값을 더하여 유효 주소 얻기

 

 

1~4번 순서

* 프로그램 카운터가 1 증가하는 것은 프로그램을 순차적으로 실행할 수 있는 원리가 됩니다.

순차적으로 실행 흐름이 끊기는 경우 발생시 다음과 같이 해결합니다.

1) 특정 메모리 주소로 실행 흐름을 이동하는 명령어 실행 시 

(e.g. JUMP, CONDITIONAL JUMP, CALL, RET)

2) 인터럽트 발생 시 

3) ETC...

 

 

 

 

 

728x90
반응형
LIST

+ Recent posts