기본
- 정의: operand가 놓인 장소를 어떻게 찾을 것인가
- 장점
- 유저에게 프로그램 다양성을 제공
- 명령 비트 수를 줄여줌
- 용어
- E.A.(effective address)
- 실제 데이터가 존재하는 주소
종류
- implied mode
- 특정한 주소 없음
- ex) push a, add a
- immediate mode
- 실제 operand 값
- ex) addi, andi
- register mode
- 레지스터 선택
- add $t0, $t1, $s1
- ex) add, mul, slt, sll
- register indirect mode
- 레지스터가 operand 주소 가지고 있음
- direct address
- operand의 e.a. 가지고 있음
- resgister addressing mode vs direct addressing mode
- 레지스터 빠름(direct는 메모리에서 값을 가져와야 되므로 더 오래 걸림)
- addressing space of memory가 레지스터보다 큼
- ex) j, jal
- indirect address
- e.a.를 가지는 주소를 가지고 있음
- 장점: 접근 메모리가 더 넓어 질 수 있음
- 단점: 메모리 두번 참조 -> 느림
- (pc) relative address
- e.a. = pc + 값(offset)
- beq, bne를 통해 명령어를 수행하므로 4byte단위이고 offset * 4를 해줌 --> 더 많은 범위 나타낼 수 있음
- 상대적인 주소임
- ex)beq, bne
- indexed address
- e.a. = base address + index register
- 배열에서 index로 주로 사용, base(고정)+index(가변)로 배열 값 접근
- base register address
- e.a. = register + 값(offset)
- ex) sw, lw
- immediate, base register는 메모리 거치지 않음
- indirect가 메모리를 2번 걸쳐 시간이 가장 오래 걸림