Last update: @1/7/2023
레지스터
•
프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장됨. 따라서 레지스터에 저
장된 값만 잘 관찰해도 프로그램의 실행 흐름을 파악할 수 있음
•
많은 종류의 CPU에서 공통적으로 사용되는 레지스터 종류
◦
프로그램 카운터(PC; Program Counter = IP; Instruction Pointer)
: 메모리에서 가져올 명령어의 주소, 즉 메모리에서 읽어 들일 명령어의 주소를 저장
◦
명령어 레지스터(IR; Instruction Register)
: 방금 메모리에서 읽어들인 명령어를 저장
◦
메모리 주소 레지스터(MAR; Memory Address Register)
: 메모리의 주소를 저장하는 레지스터. CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 메모리 주소 레지스터를 거치게 됨(PC → MAR → address bus → memory)
◦
메모리 버퍼 레지스터(MBR; Memory Buffer Register = MDR; Memory Data Register)
: 메모리와 주고받을 값(데이터와 명령어)을 저장하는 레지스터. 즉, 메모리에 쓰고 싶은 값이나 메모리로부터 전달받은 값은 메모리 버퍼 레지스터를 거침
◦
범용 레지스터(general purpose register)
: 이름 그대로 다양하고 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터. 데이터와 주소를 모두 저장할 수 있음
◦
플래그 레지스터(flag register)
: 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터
◦
스택 포인터(stack pointer)
: 스택 주소 지정 방식에 쓰이는 레지스터. 스택에 마지막으로 저장한 값의 위치를 저장함
◦
베이스 레지스터
: 베이스 레지스터 주소 지정 방식에 쓰이는 레지스터