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

2020. 6. 12. 13:57컴퓨터 구조

R-타입(Register-type) 명령어

 

op rs rt rd shamt funct
6 bit 5 bit 5 bit 5 bit 5 bit 6 bit

 

op(opcode)

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

 

rs(register source)

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

 

rt(register target)

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

 

rd(register direction)

연산의 결과값이 저장되는 레지스터

 

shamt(shift amout)

시프트 연산에 사용되는 비트

시프트 연산이 사용되지 않는다면, 0으로 고정된다.

 

funct(function code)

opcode로 명령어의 종류를 다 담기에는 부족해서 만든 추가적인 코드
opcode가 큰 분류를 지정한다면, funct에서는 작은 분류를 지정한다.

opcode

사칙연산, 논리연산 .......

funct
덧셈, 뺄셈, 곱셈, 나눗셈, and, or........

 

ex)

add $t0, $s1, $s2

special $s1 $s2 $t0 0 add
0 17 18 8 0 32
000000 10001 10010 01000 00000 100000

=

 

이진수를 16진수로 변환하는 법


4bit씩 끊어서 생각하면 편하다.

1110 1100 1010 1000 0110 0100 0010 0000
e c a 8 6 4 2 0

 

shift 연산


sll $s0, $s1, 9

special 사용 되지 않음 $s1 $s0 9 shift
0 0 17 16 9 0
000000 00000 10001 10000 01001 000000

 

flag 명령어


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

slt(set less than)


ex)
slt rd, rs, rt

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

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