해당 인프런 강의를 듣고 정리한 글입니다.
레지스터
CPU 내부의 작은 임시 저장 장치
프로그램 속 명령어 & 데이터는 실행 전후로 레지스터에 저장
프로그램 카운터
메모리에서 가져올 명령어의 주소 (Instruction Pointer)
명령어 레지스터
해석할 명령어 (방금 메모리에서 읽어들인 명령어)
제어장치가 해석
메모리 주소 레지스터
메모리의 주소. CPU가 읽을 주소를 주소 버스로 보낼 때 거치는 레지스터.
메모리 버퍼 레지스터
메모리와 주고받을 값 (데이터와 명령어)
CPU가 정보를 데이터 버스로 주고받을 때 거치는 레지스터.
예시
이런 프로그램이 있다고 해보자.
프로그램 카운터: 실행할 명령어의 주소가 1000
메모리 주소 레지스터: 읽을 주소를 주소 버스에 보내기 위해서 프로그램 카운터에서 주소 복사
메모리 읽기 주소와 함께 읽을 데이터의 주소를 보냄.
메모리 버퍼 레지스터: 데이터버스로 보낼 1000번지의 데이터(명령)가 담김
프로그램 카운터: 실행할 명령어의 주소가 1씩 증가
명령어 레지스터: 제어장치가 해석할 명령어가 들어온다
프로그램 카운터가 순차적으로 증가한다는 건, 프로그램을 순차적으로 진행하는 원리
하지만, 항상 순차적으로 실행하는 것만은 아님.
순차적인 실행 흐름이 끊기는 경우
- 특정 메모리 주소로 실행 흐름을 이동하는 명령어 실행시
- (Jump, Call, Conditional Jump, Ret)
- 인터럽트 발생시
플래그 레지스터
연산 결과 또는 CPU 상태에 대한 부가적인 정보
범용 레지스터
다양하고 일반적인 상황에서 자유롭게 사용
보통 여러개가 있다.
스택 포인터
주소 지정에 사용
스택의 꼭대기를 가리키는 레지스터
스택 주소 지정 방식: 스택과 스택 포인터를 이용한 주소 지정 방식
베이스 레지스터
주소 지정에 사용
기준 주소를 저장하는 레지스터
변위 주소 지정 방식: 오퍼랜드 필드의 값과 특정 레지스터의 값을 더하여 유효 주소를 얻기
오퍼랜드 필드의 값을 변위로 삼고 레지스터 안에 값을 더해서 유효 주소로 지정
상대 주소 지정 방식
오퍼랜드 필드의 값과 프로그램 카운터의 값을 더하여 유효 주소 얻기
실행할 명령어로부터 얼마나 떨어져있는지
베이스 레지스터 주소 지정 방식
오퍼랜드 필드의 값과 베이스 레지스터의 값을 더하여 유효 주소 얻기
기준 주소에 얼마나 떨어져있는지
'CS' 카테고리의 다른 글
[컴퓨터 구조] 명령어 (0) | 2024.01.17 |
---|---|
[컴퓨터 구조] 0과 1로 데이터 표현하기 (0) | 2024.01.16 |
[컴퓨터 구조] 컴퓨터 구조의 큰 그림 (0) | 2024.01.15 |