728x90
레지스터
프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장됨
레지스터 속 값을 유심히 관찰하면 프로그램을 실행할 때 CPU내에 무슨 일이 벌어지고 있는지, 어떤 명령어가 어떻게 수행되는지 알 수 있음
반드시 알아야 할 레지스터
레지스터들은 저마다의 역할이 있고, 그에 걸맞는 내용을 저장함
- 프로그램 카운터
- 명령어 레지스터
- 메모리 주소 레지스터
- 메모리 버퍼 레지스터
- 플래그 레지스터
- 범용 레지스터
- 스택 포인터
- 베이스 레지스터
프로그램 카운터 Program Counter
- 메모리에서 가져올 명령어의 주소, 즉 메모리에서 읽어 들일 명령어의 주소를 저장함
- 명령어 포인터라고 부르는 CPU도 있음
명령어 레지스터 Instruction Register
- 메모리에서 읽어 들인 명령어를 저장하는 레지스터
- 제어장치는 명령어 레지스터 속 명령어를 받아들이고 이를 해석한 뒤 제어 신호를 보냄
메모리 주소 레지스터 Memory Address Register
- 메모리 주소를 저장하는 레지스터
- CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 메모리 주소 레지스터를 거치게 됨
메모리 버퍼 레지스터 Memory Buffer Register
- 메모리와 주고 받을 값(데이터, 명령어)을 저장하는 레지스터
- 메모리에 쓰고 싶을 값이나 메모리로 부터 전달받은 값은 메모리 버퍼 레지스터를 거침
- 메모리 데이터 레지스터라고도 불림
범용 레지스터 General Purpose Register
- 다양하고 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터
- 데이터와 주소를 모두 저장할 수 있음
- 대다수 CPU는 범용 레지스터를 가지고 있음
플래그 레지스터 Flag Register
- 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터
특정 레지스터를 사용한 주소 지정 방식
- 프로그램 카운터, 스택 포인터, 베이스 레지스트는 주소 지정에 쓰이는 레지스터임
- 스택 포인터는 스택 주소 지정 방식에 사용됨
- 프로그램 카운터와 베이스 레지스터는 변위 주소 지정 방식에 사용됨
스택 주소 지정 방식
- 스택과 스택 포인터를 이용한 주소 지정 방식
- 스택 포인터란 스택의 꼭대기를 가리키는 레지스터임
스택은 어디에 있는 걸까? -> 메모리에 있음
메모리 안에 스택처럼 사용할 영역이 정해져 있고 이를 스택 영역이라고 부름(암묵적 약속 영역)
변위 주소 지정 방식
명령어는 연산 코드와 오퍼랜드로 이루어져 있음
오퍼랜드 필드에 메모리 주소가 담길 때도 있음
- 오퍼랜드 필드의 값과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식
이 떄, 변위 주소 지정 방식은 오퍼랜드 필드의 주소와 어떤 레지스터를 더하는지에 따라 상대 주소 지정 방식, 베이스 레지스터 주소 지정 방식 등으로 나뉨
상대 주소 지정 방식
- 오퍼랜드와 프로그램 카운더 값을 더하여 유효 주소를 얻는 방식
베이스 레지스터 주소 지정 방식
- 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식
- 베이스 레지스터는 '기준 주소', 오퍼랜드는 '기준 주소로부터 떨어진 거리'로서의 역할을 함
728x90
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] CPU 성능 향상 기법 (0) | 2022.11.22 |
---|---|
[컴퓨터구조] 명령어 사이클, 인터럽트 (0) | 2022.11.22 |
[컴퓨터구조] CPU, ALU와 제어장치 (1) | 2022.11.22 |
[컴퓨터구조] 소스 코드와 명령어 (0) | 2022.11.21 |
[컴퓨터구조] 컴퓨터 정보 단위 (1) | 2022.11.21 |