💎 주소지정방식의 종류
1) 직접주소지정방식
2) 간접주소지정방식
3) 묵시적 주소지정방식
4) 즉시 주소지정방식
5) 레지스터 주소지정 방식
6) 레지스터 간접 주소지정 방식
7) 변위 주소지정 방식
8) 상대 주소지정 방식
9) 인덱스 주소지정 방식
10) 베이스-레지스터 주소지정 방식
💍 직접 주소 지정방식 :
- 직접 주소지정방식은 오퍼랜드에 주소에 해당되는 곳으로 가면 주소 안에 데이터가 있다. 이러한 경우에는 만약에 210bit 의 오퍼랜드를 가지고 있다 할 때, CPU가 기억장치를 가리킬 수 있는 영역은 210bit 까지의 영역이다.
💍 간접 주소 지정방식 :
- 간접 주소지정 방식은 오퍼랜드 주소에 또다른 기억장치의 주소가 저장되어 있다. 이를 통해서 주소 기억장치 만큼의 크기의 기억장치 영역을 참고 할 수 있다. 이러한 간접 주소지정방식은 다중으로도 사용 할 수 있다. 이에 대한 표현은 "EA=((A))-2중 간접주소지정방식" 이러한 식이다. 여기서 EA는 Efective Adress 라는 뜻으로 유효한 주소를 가리키는 말이다. 예시로 CPU의 오퍼랜드가 10비트 라고 하고, 기억장치의 데이터타입이 2바이트 라고 할 때, 이 CPU는 217Byte 크기의 기억장치를 가질 수 있다.
💍 즉시 주소 지정방식 :
- 오퍼랜드 안에 데이터가 있는 경우이다.
장점 : 데이터를 인출하기 위해 기억장치를 엑세스 할 필요가 없다.
단점 : 상수값의 크기가 오퍼랜드 필드의 비트 수에 의해 제한된다.
💍 묵시적 주소지정방식 :
- 묵시적 주소지정방식은 연산코드 안에 데이터에 대한 정보가 들어 있는 경우이다. 예시로 ADD 명령어를 보면 해당 명령어는 오퍼랜드로 받은 데이터를 AC에 있는 데이터와 더한다. 이 과정에서 사실은 AC에 해당되는 레지스터 번호의 오퍼랜드를 알고 있어야 하지만, 이렇게 묵시적으로 ADD 명령어는 AC에 해당하는 레지스터 번호를 가지고 있는 형태이다.
ex) STL 명령어 , PUSH 명령어
장점 : 명령어 길이가 짧다.
단점 : 종류가 제한된다.
💍 레지스터 주소지정 방식 / 간접 레지스터 지정방식
-
오퍼랜드안에 레지스터 번호를 가지고 있는 경우를 레지스터 주소지정 방식이라 한다.
-
간접 레지스터 주소지정 방식은 레지스터 번호에 해당되는 레지스터로 들어 갔을 때, 해당 레지스터 안에 기억장치의 주소가 들어가 있어서, 결국엔 EA가 기억장치의 주소영역이 되는 것이다.
💍 변위 주소지정 방식
- EA = A + (R) 의 구조로 레지스터 안에 주소 값에 A라는 수를 더해서 (R)이 가리키는 주소보다 A만큼의 크기를 더한 주소를 참조하는 방식이다.
1) 상대 주소지정방식 : EA = A+(PC) 이고, PC카운터의 값을 A만큼 더해주는 구조이다. 예시로는 JMP 3를 들 수 있고, 이경우 현재 PC카운터가 100이라 하면, 해당 명령어를 통해서 103의 주소로 가게된다. 상대 주소지정방식에서 주의 할 점은 일단 명령어가 인출이 되면 PC 값이 하나 증가 한다는 것을 염두해 두어야 한다. 그래서 만약에
상대 주소지정 방식을 사용하는 JUMP 명령어가 450번지에 저장되어 있다.
- 만약 오퍼랜드 A="21" 이라면, 몇 번지로 점프 하는가?
이러한 문제가 나오게 되면 , 먼저 JUMP 명령어를 인출하게 되면 PC의 값이 450이 아니라 451이 되고, 거기서 JUMP 명령어를 실행하게 되면 +21을 해주어 471번지로 PC 카운터를 점프 한다는 것을 알아야 한다.
장점 : 전체 기억장치 주소가 명령어에 포함되어야 하는 일반적인 분기 명령어보다 적은 수의 비트만 있으면 된다.
단점 : 분기 범위가 오퍼랜드 필드의 길이에 의해 제한된다.
2) 인덱스 주소지정방식 : 인덱스 레지스터의 내용과 변위 A를 더하여 유효 주소를 결정 EA=(IX)+A
- 인덱스 레지스터(IX) : 인덱스 값을 저장하는 특수 레지스터
- 주요용도 : 배열 데이터 엑세스
자동 인덱싱 :
- 명령어가 실행 될 때마다 인덱스 레지스터의 내용이 자동적으로 증가 혹은 감소
- 이 방식이 사용된 명령어가 실행되면 아래의 두 연산이 연속적으로 수행됨
EA = (IX) + A
IX <- IX+1
3) 베이스 레지스터 주소지정방식 : 베이스 레지스터 주소 지정방식은
EA = (BR) + A 이고, 이 (BR)은 데이터영역, 힙영역, 스택영역, 코드영역 등에 따라서 다른 값을 가진다. 다른 BR 값도 있다. 앞에 말한 것은 극히 일부이다.
이렇게 A라는 매개체 주소에 BR을 더하는 식의 해싱 기법 같은 방법을 사용하여 A라는 주소를 여러 부분의 기억장치에 저장 할 수 있다.
💎 CISC / RISC
💍 CISC 프로세서 :
- 명령어들의 수가 많다
- 명령어 길이가 일정하지 않다 (명령어 종류에 따라 달라짐)
- 주소 지정방식이 매우 다양하다
- x86 / 윈도우
💍 RISC 프로세서 :
- 명령어들의 수를 최소화
- 명령어 길이를 일정하게 고정
- 주소지정 방식의 종류를 단순화
- 파이프라이닝 효과적
- ATmega microcontroller, ARM 계열 프로세서 / 임베디드