주소 지정 방식
IT 위키
- Addressing Mode; 주소 지정 방식
- 명령어의 주소부(Operand)로부터 실제 데이터가 있는 유효 주소(Effective Address)를 구하는 방법
| 방식 | 유효 주소 | 메모리 접근 | 특징 |
|---|---|---|---|
| 즉시 주소(Immediate) | — 주소부가 곧 데이터 | 0회 | 가장 빠르다. 값의 범위가 주소부 크기로 제한된다 |
| 직접 주소(Direct) | 주소부의 값이 곧 유효 주소 | 1회 | 간단하다. 주소 공간이 주소부 크기로 제한된다 |
| 간접 주소(Indirect) | 주소부가 가리키는 곳에 유효 주소가 들어 있다 | 2회 이상 | 주소 공간이 넓어지지만 느리다 |
| 레지스터 주소(Register) | 주소부가 지정한 레지스터가 곧 데이터 | 0회 | 빠르다 |
| 레지스터 간접(Register Indirect) | 레지스터의 값이 유효 주소 | 1회 | 포인터 구현에 쓴다 |
| 상대 주소(Relative) | PC(프로그램 카운터) + 주소부 | 1회 | 재배치 가능한 코드, 분기 명령 |
| 베이스 레지스터(Base Register) | 베이스 레지스터 + 주소부 | 1회 | 프로그램 재배치, 세그먼트 |
| 인덱스 레지스터(Indexed) | 인덱스 레지스터 + 주소부 | 1회 | 배열 원소 접근 |
| 묵시적 주소(Implied) | 명령어가 대상을 이미 지정 | — | 누산기를 쓰는 명령(CLA 등) |
- "명령어의 주소부를 유효주소로 그대로 이용하는 방법"이 직접 주소다.
- 즉시 주소는 주소부를 데이터로 쓰는 것이라 유효 주소라는 개념 자체가 없다. 둘을 혼동하지 않는다.
- 절대 주소는 기억장치의 물리 주소를 그대로 가리키는 것이고, 상대 주소는 기준점(PC 등)으로부터의 변위다.
- 즉시 → 직접 → 간접 순으로 메모리 접근 횟수가 늘고, 그만큼 느려지는 대신 표현할 수 있는 주소 공간은 넓어진다.
