레지스터
: CPU 내부의 작은 임시 저장 장치로 프로그램을 실행하는데 필요한 값들을 임시로 저장한다.
프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장된다.
레지스터의 종류 8가지
※ 레지스터는 CPU마다 이름, 크기, 종류가 다르다
프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터, 플래그 레지스터, 범용 레지스터, 스택 포인터, 베이스 레지스터 등이 있다.
*제어장치는 이 명령어 레지스터 안에 저장된 명령어를 해석하여 제어신호를 내보낸다.
*CPU가 읽고자 하는 주소값을 주소버스로 내보낼때 이 메모리 주소 레지스터를 거친다.
*CPU가 메모리에 전달할 값이나 메모리로부터 전달받은 값(데이터 or 명령어)을 데이터버스로 내보낼때
이 메모리 버퍼 레지스터를 거친다.
※ 순차적인 실행흐름이 바뀌는 경우
① JUMP, CONDITIONAL JUMP, CALL, RET 등 특정 메모리 주소로 실행흐름을 이동시키는 명령어 실행
▶ 이 경우에는 프로그램 카운터에 변경된 명령어의 주소가 저장된다.
② 인터럽트가 발생했을 때
⑦스택 포인터와 ⑧베이스 레지스터는 주소 지정에 사용될 수 있는 특별한 레지스터이다.
스택 포인터는 스택 주소 지정방식에 사용되며,
프로그램 카운터와 베이스 레지스터는 변위 주소 지정방식에 사용된다.
스택 주소 지정방식
스택과 스택 포인터를 이용한 주소 지정 방식.
스택 : 메모리 안에 스택으로 사용할 영역이 지정되어 있다.
(=스택영역)
스택은 한쪽 끝이 막혀있는 저장공간으로 후입선출구조
(LIFO : Last In Frist Out)
스택 포인터 : 스택의 꼭대기를 가리키는 레지스터
(스택에 마지막으로 저장한 값의 위치를 저장)
변위 주소 지정방식
: 오퍼랜드 필드의 값(변위) + 특정 레지스터의 값
→ 유효 주소 GET
명령어는 연산 코드 + 오퍼랜드 구조로 이루어져 있는데 이 오퍼랜드 필드에는 메모리 주소가 담길 때도 있다. 변위주소지정방식은 오퍼랜드 필드의 값과 특정 레지스터의 값으로 유효 주소를 얻어내는 주소 지정 방식이다.
상대주소 지정방식과 베이스레지스터 지정방식 두 가지가 있다.