A good answer might be:

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 each register for a specific purpose. This is not required by hardware. It is just a way for programmers to avoid confusion by establishing conventions. The extended assembler uses mnenomic names for registers that show how they are used.

For example, registers $8 through $15 are conventionally used to hold temporary values. The mnemonic name for these registers is $t0 through $t7.

Register
Number
Mnemonic
Name
Conventional Use Register
Number
Mnemonic
Name
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.

QUESTION 2:

Does the extended assembler output different machine instructions than the basic assembler?