들어가며
레지스터는 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...
'혼자 공부하는 컴퓨터 구조 및 운영체제 (복습)' 카테고리의 다른 글
빠른 CPU를 위한 설계 기법 (7) | 2024.10.12 |
---|---|
명령어 사이클과 인터럽트 (7) | 2024.10.12 |
CPU의 내부 구성 - ALU와 제어장치 (6) | 2024.10.10 |
C 언어의 컴파일 과정 (7) | 2024.10.10 |
명령어의 구조 (6) | 2024.10.10 |