Last active
July 12, 2018 01:18
-
-
Save tilkinsc/18536449ad3d8661884bb76d0281978a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 32-bit Instructions Types | |
op a b c d f | |
_____________________ | |
R-Type 6 5 5 5 5 6 | |
I-type 6 5 5 16 | |
J-Type 6 24 | |
Bit Length | |
R-Types | |
//____________________________________________________________________________________________________________________ | |
ADD overflow | 000000 RS RT RD 00000 100000 AKA (RD = RS + RT) | |
ADDU noverflow | 000000 RS RT RD 00000 100001 AKA (RD = RS + RT) | |
SUB overflow | 000000 RS RT RD 00000 100010 AKA (RD = RS - RT) | |
SUBU noverflow | 000000 RS RT RD 00000 100011 AKA (RD = RS - RT) | |
MUL noverflow | 000000 RS RT 00000 00000 011000 AKA (HI&&LO = RS * RT) | |
MULU noverflow | 000000 RS RT 00000 00000 011001 AKA (HI&&LO = RS * RT) | |
DIV noverflow | 000000 RS RT 00000 00000 011010 AKA (Lo = RS / RT ; Hi = RS mod RT) | |
DIV noverflow | 000000 RS RT 00000 00000 011011 AKA (Lo = RS / RT ; Hi = RS mod RT) | |
SLT noverflow | 000000 RS RT RD 00000 101010 AKA (if[RS < RT] RD = 0 || 1; else RD = 0) | |
SLTU noverflow | 000000 RS RT RD 00000 101011 AKA (if[RS < RT] RD = 0 || 1; else RD = 0) | |
AND noverflow | 000000 RS RT RD 00000 100100 AKA (RD = RS AND RT) | |
OR noverflow | 000000 RS RT RD 00000 100101 AKA (RD = RS OR RT) | |
NOR noverflow | 000000 RS RT RD 00000 100111 AKA (RD = RS NOR RT) | |
XOR noverflow | 000000 RS RT RD 00000 101000 AKA (RD = RS XOR RT) | |
NOP noverflow | 000000 00000 00000 00000 00000 000000 AKA (nop) | |
MFHI noverflow | 000000 00000 00000 RD 00000 010000 AKA (RD = HI) | |
MFLO noverflow | 000000 00000 00000 RD 00000 010010 AKA (RD = LO) | |
I-Types | |
//____________________________________________________________________________________________________________________ | |
ADDI overflow | 001000 RS RT Imm AKA (RT = RS + Imm) !16 bits! | |
ADDIU noverflow | 001001 RS RT Imm AKA (RT = RS + Imm) !16 bits! | |
SLTI noverflow | 001010 RS RT Imm AKA (if[RS < Imm] RT = 0 || 1; else RT = 0) !16 bits! | |
SLTIU noverflow | 001011 RS RT Imm AKA (if[RS < Imm] RT = 0 || 1; else RT = 0) !16 bits! | |
ANDI noverflow | 001100 RS RT Imm AKA (RT = RS AND Imm) !16 bits! | |
ORI noverflow | 001101 RS RT Imm AKA (RT = RS OR Imm) !16 bits! | |
XORI noverflow | 001110 RS RT Imm AKA (RT = RS XOR Imm) !16 bits! | |
LW illegal | 100011 RS RT Off AKA (RT = &{RS+Off}) !16 bits! remember to know the difference between memory addresses and values | |
SW illegal | 101011 RS RT Off AKA (&{RS+Off} = RT) !16 bits! | |
LBU illegal | 100100 RS RT Off AKA (RT = &{RS + Off}) !16 bits! | |
LB illegal | 100000 RS RT Off AKA (RT = &{RS + Off}) !16 bits! | |
SB illegal | 101000 RS RT Off AKA (&{RS + Off} = RT) !16 bits! | |
LUI illegal | 001111 00000 RT Imm AKA (RT = Imm) | |
BEQ | 000100 RS RT Off AKA (if[RS == RT] goto Off) | |
BNE | 000101 RS RT Off AKA (if[RS != RT] goto Off) | |
BLEZ | 000110 RS 00000 Off AKA (if[RS <= 0] goto Off) | |
BGTZ | 000111 RS 00000 Off AKA (if[RS > 0] goto Off) | |
BLTZ | 000001 RS 00000 Off AKA (if[RS < 0] goto Off) | |
Jumps / J-Types | |
//____________________________________________________________________________________________________________________ | |
J | 000010 Off AKA (goto Off) | |
JAL | 000011 Off AKA (goto Off) | |
JR R-Type | 000000 RS 00000 00000 00000 001000 AKA (goto RS) | |
JALR R-Type | 000000 RS 00000 RD 00000 001001 AKA (goto ??) | |
Exceptions | |
//____________________________________________________________________________________________________________________ | |
MFEPC R-Type | 010000 00000 RD 01110 00000 000000 AKA (RD = EPC) | |
MFCO R-Type | 010000 00000 RD 01101 00000 000000 AKA (RD = CR) | |
Floating Point | |
//____________________________________________________________________________________________________________________ | |
LWC1 I-Type noverflow | 110001 RS FT Off AKA (FT = RS + Off) | |
SWC1 I-Type noverflow | 111001 RS FT Off AKA (RS + Off = FT) | |
ADD.S R-Type overflow | 010001 00000 FT FS FD 000000 AKA (FD = FS + FT) | |
ADD.D R-Type overflow | 010001 00001 FT FS FD 000000 AKA (FD = FS + FT) | |
SUB.S R-Type overflow | 010001 00000 FT FS FD 000001 AKA (FD = FS - FT) | |
SUB.D R-Type overflow | 010001 00001 FT FS FD 000001 AKA (FD = FS - FT) | |
MUL.S R-Type overflow | 010001 00000 FT FS FD 000002 AKA (FD = FS * FT) | |
MUL.D R-Type overflow | 010001 00001 FT FS FD 000002 AKA (FD = FS * FT) | |
DIV.S R-Type overflow | 010001 00000 FT FS FD 000003 AKA (FD = FS * FT) | |
DIV.D R-Type overflow | 010001 00001 FT FS FD 000003 AKA (FD = FS * FT) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment