[컴퓨터 구조][MIPS] I-타입(Immediate-type) 명령어

2020. 6. 12. 16:20컴퓨터 구조

I-타입(Immediate-type) 명령어

 

op rs rt 상수(constant or address)
6 bit 5 bit 5 bit 16 bit

 

op(opcode)

명령어의 종류를 알 수 있게 해준다.

 

rs(register source)

연산을 위해 사용되는 첫 번째 레지스터

 

rt(register target)

연산의 결과값이 저장되는 레지스터
R-type과는 다르게 I-type은 rt에 저장이 된다.

 

상수(constant or address)

constant
-2^15 ~ 2^15 - 1 까지의 수

address
rs에 추가될 offset
c언어에서의 배열 번호를 말한다.

c code
a[5]

MIPS
$s0 + 20

하나의 값이 4byte이므로
4n을 더해준다.

 

상수 연산


addi $s0, $s1, 4

단, 빼기는 존재하지 않는다.
(덧셈으로 바꿔서 계산)

ex)
a = a - 4

a = a + (-4)

 

load


메모리 에서 레지스터로
데이터를 복사

ex)
lw $t0, 32($s3)

$to : 값을 저장할 레지스터
$s3 : Base register(값을 가져올 메모리의 주소값)
32 : offset

$to = 메모리의 ($s3 + 32) 위치에 있는 값

store


레지스터 에서 메모리로
데이터를 복사

ex)
sw $t0, 32($s3)

$to : 값을 저장할 레지스터
$s3 :Base register(값을 가져올메모리의 주소값)
32 :offset

메모리의 ($s3 + 32) 위치에 있는 값 = $t0

 

분기(branch) 명령어


조건이 참인 경우 주어진 위치로 분기

c언어에서 if문을 생각하면 편하다.

beq(branch on equal)

bne(branch on not equal)

ex)
beq rs, rt, L1

L1 : 숫자
(address값을 적는 것이 아니다 주의하자.)

만약 rs = rt 이면, L1개 만큼의 명령어를 건너뛰어라.

if(rs = rt) than, PC = 4 + (4 * L1) 

 

flag 명령어


주어진 값보다 작다면, 결과값을 1
크다면, 결과값을 0으로 바꿔준다.

slti(set less than)


ex)
slti rt, rs, constant

만약 rs < constant 이면, rt를 1로, 아니라면 rt를 0으로.

if(rs < constant) than, rt = 1 else rt = 0