Assembly code 는 기계어 형식으로 바꾸어 써야하며 MIPS 에서 기계어 형식은 3가지 type 이 존재한다.
1.R-type : 가장 기본적인 Instruction format
- Arithmetic instruction format
opcode : operation (6bit)
rs : first source operand (5bit)
rt : second source operand (5bit)
rd : destination operand (5bit)
shamt : shift amount (5bit)
funct : function code (6bit)
예시) ADD $t0, $s0, $s1 ($t0 <- $s0 + $s1)
opcode : 0 (ADD) rs : 16($s0) rt : 17($s1) rd : 8($t0) shamt : 0 funct : 32
Decimal
0 | 16 | 17 | 8 | 0 | 32 |
Binary
000000 | 10001 | 10010 | 01000 | 00000 | 100000 |
Hexadecimal
0000 0010 0011 0010 0100 0000 0010 0000 |
0 2 3 2 4 0 2 0 |
+참고
$t0-$t7 ( 8 to 15 )
$s0-$s7 ( 16 to 23 )
2.I-type : 상수를 이용하기 위해 더 긴 길이의 field가 필요해서 만들어진 instruction format
-Transfer, branch, immediate format
-5 bit에 상수를 넣기에는 너무 작다.
-그러므로, 16bit를 상수를 할당하는 데 이용한다. (rd 없어짐 -> rt가 destination 역할)
-사용하는 opcode
- A/L : ADDI , ORI
- Branch : BEQ, BNE
- Data transfter : LW, SW
예시) LW $s0, 32($s1)
Decimal
op=35 | rs=17 ($s1) | rt=16 ($s0) | constant = 32 |
Binary
100011 | 01001 | 01000 | 0000 0000 0010 0000 |
3.J-type : jump 명령어로 다른 address 를 접근할 때 이용한다. 메모리에 접근하기에 16 bit는 턱없이 부족해 고안되었다.
-Jump instruction format
-c언어의 goto문과 같음
-J, JR, JAL
opcode : operation (6bit)
jump address(word address) : 26bit
예시) J 400
jum address 는 word 단위이므로 instruction format을 작성할 때에는 400/4 = 100으로 작성해야한다 (4bytes = 1 word)
2 | 100 (400/4) |
'ੈ✩‧₊˚Computer Science > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] Pipelining Hazard (파이프라인 해저드) (0) | 2020.11.13 |
---|---|
[컴퓨터구조] MultiCycle Datapath (0) | 2020.11.06 |
[컴퓨터구조] single cycle 의 단점, multi cycle (0) | 2020.11.06 |
[컴퓨터구조] Datapath 간단한 설계 (0) | 2020.10.30 |
[컴퓨터구조] 데이터패스(Datapath) 명령어 실행(MIPS) (0) | 2020.10.30 |