|
| 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