
1. Immediate addressing
- 필요한 데이터를 직접 넣는다.
- I-포맷 명령
op | rs | rt | constant or address |
6비트 | 5비트 | 5비트 | 16비트 |
- 명령어 : addi
2. Register Addressing
- 피연산자로 레지스터 주소를 사용한다.
- R-포맷 명령
op | rd | rs | rt | shamt | funct |
6비트 | 5비트 | 5비트 | 5비트 | 5비트 | 6비트 |
- 명령어 : add, sub
3. Base addressing
- 피연산자인 레지스터 주소와 address(상수값)의 합으로 메모리에 접근한다.
- I-포맷 명령
op | rs | rt | constant or address |
6비트 | 5비트 | 5비트 | 16비트 |
- 명령어 : lw, sw
4. PC-relative addressing
- Branch target address
- 현재 PC 값(PC + 4)과 오프셋 주소 x4 값의 합으로 메모리에 접근한다.
- (PC + 4) + (Branch offset * 4)
op | rs | rt | constant or address |
6비트 | 5비트 | 5비트 | 16비트 |
- 명령어 : beq, bne
예제
- Loop 시작이 80000이라 가정하자.
Loop: sll $t1, $s3, 2 | 80000 | 0 | 0 | 19 | 9 | 4 | 0 |
add $t1, $t1, $s6 | 80004 | 0 | 9 | 22 | 9 | 0 | 32 |
lw $t0, 0($t1) | 80008 | 35 | 9 | 8 | 0 | ||
bne $t0, $s5, Exit | 80012 | 5 | 8 | 21 | 2 | ||
addi $s3, $s3, 1 | 80016 | 8 | 19 | 19 | 1 | ||
j Loop | 80020 | 2 | 20000 | ||||
Exit: … | 80024 |
- 80012 : PC(16 = 12 + 4) + 오프셋(2) X 4 = 80016+8 = 80024
- 따라서 80024인 Exit로 이동한다.
5. Pseudodirect addressing
- 현재 PC 상위 4비트에 address 26비트를 왼쪽으로 2비트 쉬프트해서 32비트로 만들고 메모리 접근한다.
op | address |
6비트 | 26비트 |
- 명령어 : j, jal
예제
- 4번 예제
- 80020 : 실제로 가는 값은 20000x4인 80000
- 따라서 80000인 Loop로 이동한다.
'컴퓨터시스템구조' 카테고리의 다른 글
[컴퓨터시스템구조] 14. MIPS Sort (1) | 2023.10.15 |
---|---|
[컴퓨터시스템구조] 13. MIPS 동기화 (0) | 2023.10.15 |
[컴퓨터시스템구조] 11. MIPS 주소지정 (0) | 2023.10.14 |
[컴퓨터시스템구조] 10. MIPS 문자열 연산자(lb, lh, sb, sh) (0) | 2023.10.14 |
[컴퓨터시스템구조] 09. MIPS 프로시저 호출(jal, jr) (1) | 2023.10.14 |

1. Immediate addressing
- 필요한 데이터를 직접 넣는다.
- I-포맷 명령
op | rs | rt | constant or address |
6비트 | 5비트 | 5비트 | 16비트 |
- 명령어 : addi
2. Register Addressing
- 피연산자로 레지스터 주소를 사용한다.
- R-포맷 명령
op | rd | rs | rt | shamt | funct |
6비트 | 5비트 | 5비트 | 5비트 | 5비트 | 6비트 |
- 명령어 : add, sub
3. Base addressing
- 피연산자인 레지스터 주소와 address(상수값)의 합으로 메모리에 접근한다.
- I-포맷 명령
op | rs | rt | constant or address |
6비트 | 5비트 | 5비트 | 16비트 |
- 명령어 : lw, sw
4. PC-relative addressing
- Branch target address
- 현재 PC 값(PC + 4)과 오프셋 주소 x4 값의 합으로 메모리에 접근한다.
- (PC + 4) + (Branch offset * 4)
op | rs | rt | constant or address |
6비트 | 5비트 | 5비트 | 16비트 |
- 명령어 : beq, bne
예제
- Loop 시작이 80000이라 가정하자.
Loop: sll $t1, $s3, 2 | 80000 | 0 | 0 | 19 | 9 | 4 | 0 |
add $t1, $t1, $s6 | 80004 | 0 | 9 | 22 | 9 | 0 | 32 |
lw $t0, 0($t1) | 80008 | 35 | 9 | 8 | 0 | ||
bne $t0, $s5, Exit | 80012 | 5 | 8 | 21 | 2 | ||
addi $s3, $s3, 1 | 80016 | 8 | 19 | 19 | 1 | ||
j Loop | 80020 | 2 | 20000 | ||||
Exit: … | 80024 |
- 80012 : PC(16 = 12 + 4) + 오프셋(2) X 4 = 80016+8 = 80024
- 따라서 80024인 Exit로 이동한다.
5. Pseudodirect addressing
- 현재 PC 상위 4비트에 address 26비트를 왼쪽으로 2비트 쉬프트해서 32비트로 만들고 메모리 접근한다.
op | address |
6비트 | 26비트 |
- 명령어 : j, jal
예제
- 4번 예제
- 80020 : 실제로 가는 값은 20000x4인 80000
- 따라서 80000인 Loop로 이동한다.
'컴퓨터시스템구조' 카테고리의 다른 글
[컴퓨터시스템구조] 14. MIPS Sort (1) | 2023.10.15 |
---|---|
[컴퓨터시스템구조] 13. MIPS 동기화 (0) | 2023.10.15 |
[컴퓨터시스템구조] 11. MIPS 주소지정 (0) | 2023.10.14 |
[컴퓨터시스템구조] 10. MIPS 문자열 연산자(lb, lh, sb, sh) (0) | 2023.10.14 |
[컴퓨터시스템구조] 09. MIPS 프로시저 호출(jal, jr) (1) | 2023.10.14 |