경희대학교 김정욱 교수님의 컴퓨터구조 강의를 기반으로 정리한 글입니다.
MIPS(Microprocessor without Interlocked Pipeline Stages)
- Instruction set architecture created by MIPS technologies
Design Principles of MIPS
- 성능을 최대화하고, 비용을 최소화하면서, 하드웨어 및 컴파일러를 쉽게 구축할 수 있는 언어를 만들자.
- 간단함을 위해 규칙적으로 만들자
- 작은 것이 빠르다 → 레지스터 수를 32로 제한
- 좋은 설계는 적당한 타협을 요구한다 → 명령어 하나는 32 bits
- 일반적인 상황은 빠르게 만들자 → $zero 레지스터를 만듦
Arithmetic Instructions in MIPS
General 3-operand format of MIPS assembly language notation

- 세 개의 operand → 두 개의 source, 한 개의 destination
- 한 개의 operation (e.g., add, sub, addi, …)
- 즉, source1과 source2를 operation한 결과를 destination에 저장해라
Register
- CPU가 요청을 처리할 때 필요한 데이터를 일시적으로 저장하는 기억장치
- 빠르게 접근, 저장, 데이터 및 명령어 전송을 위해 사용
- 레지스터 수는 32로 제한 → 많을 수록 많은 정보를 저장해놓고 사용 가능, but 연산할 데이터 양이 줄어듬 → 줄어들면 저장한 정보가 적어, 메모리 접근이 많아짐
- 0~31까지 번호가 새겨진 레지스터가 있고 레지스터를 나타내기 위해 $와 함께 2글자 문자로 표현됨
Example
- $s0-$s7: 8개의 값을 저장시킬 수 있는 레지스터. 잃어버리면 안되는 값들을 매핑
- $t0-$t9: 임시적으로 저장할 데이터를 저장하는 레지스터
- $zero: 0이라는 값만 저장되어 있음
- $a0-$a3: 함수에서 인자를 받을 때 사용하는 레지스터
- $v0-$v1: 리턴 값을 저장하는 레지스터
- $gp, $fp, $sp: 스택을 다룰 때 사용하는 레지스터
- $ra: 원래 함수로 돌아가는 주소 값을 담고 있는 레지스터
- $at: 어셈블러가 알아서 사용하는 레지스터
f = (g + h) - (i + j) # f, g, h, i, j = $s0~$s4
add $t0, $s1, $s2 # 레지스터 $t0에 g + h 저장
add $t1, $s3, $s4 # 레지스터 $t1에 i + j 저장
sub $s0, $t0, $t1 # f에 (g + h) - (i + j)저장
Memory Operands
- 각각의 메모리에 저장되어 있는 32 bits 데이터를 word라고 함
- word 하나는 4Byte 크기를 가지고 메모리에 접근하기 위해선 Byte Address가 필요하다 → 4 단위(e.g., 0, 4, 8, 12, …)
g = h + A[8] # g, h = $s1, $s2, A의 base address = $s3
lw $t0, 32($s3) # A[8]을 $t0에 저장, lw = load word
add $s1, $s2, $t0 # g = h + A[8]
A[12] = h + A[8] # h = $s2, A의 base address = $s3
lw $t0, 32($s3) # A[8]을 $t0에 저장
add $t0, $s2, $t0 # h + A[8]을 $t0에 저장
sw $t0, 48($s3) # $t0을 A[12]에 저장, sw = store word
Constant or Immediate Operands
lw $t0, AddrConstant4($s1) # $t0 = constant 4
add $s3, $s3, $t0 # $s3 = $s3 + $t0 ($t0 = 4)
addi $s3, $s3, 4 # $s3 = $s3 + 4
- 인스터럭션 수, 메모리 접근 시간 감소
MIPS register 0 ($zero) is the constant 0
- 값을 전달할 때 자주 쓰임
add $t2, $s1, $zero # $t2 = $s1
Example

addi $t0, $s2, -5 or subi $t0, $s2, 5
add $s0, $s1, $t0

lw $t0, 16($s6)
sub $t0, $zero, $t0
sub $s0, $t0, $s1
MIPS assembly language

'Computer Science > Computer Architecture' 카테고리의 다른 글
| [컴퓨터구조] Lecture 06: Instructions - Language of the Computer - Part3 (0) | 2026.02.08 |
|---|---|
| [컴퓨터구조] Lecture 05: Instructions - Language of the Computer - Part2 (0) | 2026.02.08 |
| [컴퓨터구조] Lecture 03: Computer Abstractions and Technology - Part2 (0) | 2026.02.08 |
| [컴퓨터구조] Lecture 02: Computer Abstractions and Technology - Part1 (0) | 2026.02.08 |
| [혼공컴운] 3주차_Chapter 06 ~ 08 (0) | 2026.02.08 |