MIPS III instructions

The NEC VR4300 uses an instruction set that is nearly identical to that of the MIPS III Instruction Set Architecture (ISA). While the instruction set is explained in detail in the VR4300 datasheet, this article serves as a reformatted reference for those same instructions, including any quirks or additional reminders that are useful when programming something for the N64. See also MIPS Assembly.

If you are looking for instructions to perform certain actions, use your browser's search feature with.

= Instruction Notation Key =

= CPU Instruction Set = Every instruction has a 32-bit instruction word that the CPU uses to identify the instruction and any arguments used in it. The upper 6 bits is the instruction's opcode, however some instructions use additional constant bits to further define the operation. For example, the SPECIAL opcode is used for numerous instructions including ADD, SUB, AND, BREAK, and more.

Typically an assembler will be used when programming in order to format the proper instruction word, when generating a ROM file. Most developers can safely ignore the instruction word column entirely.

''However, most assemblers implement branch instructions differently! Instead of an offset value, they usually require the use of a label or absolute address.''

Hazards
The  and   instructions will produce incorrect results if any of the two following instructions modify the   and   registers, respectively. Note that by default, assemblers other than Bass will prevent this by reordering instructions or inserting. If you are using  or Bass, you must ensure this yourself.

ADD
Format: ADD rd, rs, rt Description::

Exceptions::

ADDI
Format: ADDI rt, rs, immediate Description::

Exceptions::

TODO

= FPU Instruction Set = The floating point unit (FPU) is contained within the VR3400 microprocessor and handles floating point operations. The FPU uses a different set of registers for its operations (f0 - f31). While these registers are separate from general purpose registers, they function the same way.

Many FPU instructions require an operand format. This format dictates the size of the operators and whether they are floating-point or fixed-point, as noted in this table:

Some instructions will also require a conditional. This determines what kind of comparison is performed.

Instruction Word Key

TODO

= Pseudo-Instructions = Many assemblers, regardless of architecture, will add additional instructions to assist developers. This table shows the instructions added by the bass assembler, which is commonly used to develop N64 ROMs.