How to know MIPS-instruction format R, I or J

assembly, mips, opcode

Solution

Take a look at the opcode bits - the most significant 6 bits. In C, if `n` is the 32-bit command dword, the expression for the opcode is `(n >> 26) & 0x3f`.

If opcode is 0, then it's a register command.

If it's 2 (`j`), 3 (`jal`), or 26 (`trap`) - it's a jump.

Else immediate.

A cheat sheet of MIPS encoding, including a list of all opcodes, is available here, and probably elsewhere.

Problem

How to know if the opcode of the MIPS instruction is Register, Imidiate or Jump ? Given this table from the book, but is there any way to define the format of the opcode ?

Original source