go to previous page   go to home page   go to next page hear noise


A register is an electronic device that holds bit patterns. A general purpose register is a register that is visible to assembly language. The floating point registers, although visible to assembly language, are not regarded as general purpose registers.

Register Mnemonics

Although the registers are called "general purpose", it is conventional in software to use specific registers for specific purposes. This is not required by hardware. It is just a way for programmers to avoid confusion by establishing conventions. The extended assembler uses mnemonic names for registers that show how they are used.

For example, registers $8 through $15 are conventionally used to hold temporary values. Mnemonic names for these registers are $t0 through $t7.

Conventional Use Register
Conventional Use
$0 $zero Permanently 0 $24, $25 $t8, $t9 Temporary
$1 $at Assembler Temporary $26, $27 $k0, $k1 Kernel
$2, $3 $v0, $v1 Value returned by a subroutine $28 $gp Global Pointer
$4-$7 $a0-$a3 Subroutine Arguments $29 $sp Stack Pointer
$8-$15 $t0-$t7 Temporary
$30 $fp Frame Pointer
$16-$23 $s0-$s7 Saved registers
$31 $ra Return Address

As far as hardware is concerned, only registers $0 and $31 are different from the rest ($0 is always full of zeros and $31 is automatically used by some subroutine linkage instructions to hold the return address). The remaining registers are electronically identical. It is a software convention to use different sets of registers for different purposes.


Are programs written in extended assembly code executed on the same MIPS processor we have been looking at?