A good answer might be:

This is an optimization for speed. Many subroutines neeed to use only a few registers. They can use the "T" registers without the added expense of saving and restoring them.

Diagram

Those rules are somewhat complicated. Here is a picture. It shows the four sections of subroutine linkage. The basic tasks of each section are:

Subroutine Call: Push all "T" registers that contain values that will be needed after the call. Put arguments in "A" registers. jal to the subroutine.
Prolog: If this subroutine calls other subroutines, push $ra. Push all "S" registers that the subroutine alters.
Body: Normal code, except that it must follow these conventions. "T" and "A" registers can be used freely, as can any "S" registers that were saved in the prolog.
Epilog: Put return values in "V" registers. Pop any "S" registers. Pop $ra if it was pushed in the prolog. jr $ra back to the caller.
Return: Pop any "T" registers that were previously pushed.


QUESTION 7:

Is there any limit in these rules about how many levels deep subroutine calls may be?