Skip to content

Commit 9b7fe7b

Browse files
committed
A: add instruction set of MIPS-CPU54
1 parent eabf1b9 commit 9b7fe7b

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

instructions_54.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# reference: https://www.cs.cmu.edu/afs/cs/academic/class/15740-f97/public/doc/mips-isa.pdf
2+
instr_set = {
3+
# 21
4+
"j": { "OP": 0b000010, "FUNCT": "unlimited" },
5+
"jal": { "OP": 0b000011, "FUNCT": "unlimited" },
6+
"beq": { "OP": 0b000100, "FUNCT": "unlimited" },
7+
"bne": { "OP": 0b000101, "FUNCT": "unlimited" },
8+
"addi": { "OP": 0b001000, "FUNCT": "unlimited" },
9+
"addiu": { "OP": 0b001001, "FUNCT": "unlimited" },
10+
"slti": { "OP": 0b001010, "FUNCT": "unlimited" },
11+
"sltiu": { "OP": 0b001011, "FUNCT": "unlimited" },
12+
"andi": { "OP": 0b001100, "FUNCT": "unlimited" },
13+
"ori": { "OP": 0b001101, "FUNCT": "unlimited" },
14+
"xori": { "OP": 0b001110, "FUNCT": "unlimited" },
15+
"lui": { "OP": 0b001111, "RS": 0b00000, "FUNCT": "unlimited" },
16+
"clz": { "OP": 0b011100, "FUNCT": "unlimited" },
17+
"lb": { "OP": 0b100000, "FUNCT": "unlimited" },
18+
"lh": { "OP": 0b100001, "FUNCT": "unlimited" },
19+
"lw": { "OP": 0b100011, "FUNCT": "unlimited" },
20+
"lbu": { "OP": 0b100100, "FUNCT": "unlimited" },
21+
"lhu": { "OP": 0b100101, "FUNCT": "unlimited" },
22+
"sb": { "OP": 0b101000, "FUNCT": "unlimited" },
23+
"sh": { "OP": 0b101001, "FUNCT": "unlimited" },
24+
"sw": { "OP": 0b101011, "FUNCT": "unlimited" },
25+
26+
# 14
27+
"mul": { "OP": 0b011100, "SA": 0b00000, "FUNCT": 0b000010 },
28+
"sllv": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b000100 },
29+
"srlv": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b000110 },
30+
"srav": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b000111 },
31+
"add": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b100000 },
32+
"addu": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b100001 },
33+
"sub": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b100010 },
34+
"subu": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b100011 },
35+
"and": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b100100 },
36+
"or": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b100101 },
37+
"xor": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b100110 },
38+
"nor": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b100111 },
39+
"slt": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b101010 },
40+
"sltu": { "OP": 0b000000, "SA": 0b00000, "FUNCT": 0b101011 },
41+
42+
# 3
43+
"sll": { "OP": 0b000000, "RS": 0b00000, "FUNCT": 0b000000 },
44+
"srl": { "OP": 0b000000, "RS": 0b00000, "FUNCT": 0b000010 },
45+
"sra": { "OP": 0b000000, "RS": 0b00000, "FUNCT": 0b000011 },
46+
47+
# 4
48+
"mult": { "OP": 0b000000, "RD": 0b00000, "SA": 0b00000, "FUNCT": 0b011000 },
49+
"multu": { "OP": 0b000000, "RD": 0b00000, "SA": 0b00000, "FUNCT": 0b011001 },
50+
"div": { "OP": 0b000000, "RD": 0b00000, "SA": 0b00000, "FUNCT": 0b011010 },
51+
"divu": { "OP": 0b000000, "RD": 0b00000, "SA": 0b00000, "FUNCT": 0b011011 },
52+
53+
# 3
54+
"syscall": { "OP": 0b000000, "FUNCT": 0b001100 },
55+
"break": { "OP": 0b000000, "FUNCT": 0b001101 }, # SPECIAL code BREAK | BREAK
56+
"teq": { "OP": 0b000000, "FUNCT": 0b110100 },
57+
58+
# 3
59+
"bgez": { "OP": 0b000001, "RT": 0b00001, "FUNCT": "unlimited" }, # REGIMM rs BGEZ offset | BGEZ rs, offset
60+
"jr": { "OP": 0b000000, "RT": 0b00000, "RD": 0b00000, "SA": 0b00000, "FUNCT": 0b001000 },
61+
"jalr": { "OP": 0b000000, "RT": 0b00000, "SA": 0b00000, "FUNCT": 0b001001 }, # SPECIAL rs 0 rd 0 JALR | JALR rs (rd = 31 implied) | JALR rd, rs
62+
63+
# 7
64+
"mfc0": { "OP": 0b010000, "RS": 0b00000, "SA": 0b00000, "FUNCT": 0b000000 },
65+
"mtc0": { "OP": 0b010000, "RS": 0b00100, "SA": 0b00000, "FUNCT": 0b000000 },
66+
"mfhi": { "OP": 0b000000, "RS": 0b00000, "RT": 0b00000, "SA": 0b00000, "FUNCT": 0b010000 },
67+
"mflo": { "OP": 0b000000, "RS": 0b00000, "RT": 0b00000, "SA": 0b00000, "FUNCT": 0b010010 },
68+
"mthi": { "OP": 0b000000, "RT": 0b00000, "RD": 0b00000, "SA": 0b00000, "FUNCT": 0b010001 },
69+
"mtlo": { "OP": 0b000000, "RT": 0b00000, "RD": 0b00000, "SA": 0b00000, "FUNCT": 0b010011 },
70+
71+
# 1
72+
"eret": { "OP": 0b100000, "RS": 0b10000, "RT": 0b00000, "RD": 0b00000, "SA": 0b00000, "FUNCT": 0b011000 },
73+
}
74+

0 commit comments

Comments
 (0)