Register Definitions
====================

Integer Registers
-----------------

+---------+----------+-----------------------------------+--------+
|Register | ABI Name | Description                       | Saver  |
+=========+==========+===================================+========+
|x0       |zero      | Hard-wired zero                   |        |
+---------+----------+-----------------------------------+--------+
|x1       |ra        | Return address                    | Caller |
+---------+----------+-----------------------------------+--------+
|x2       |sp        | Stack pointer                     | Callee |
+---------+----------+-----------------------------------+--------+
|x3       |gp        | Global pointer                    |        |
+---------+----------+-----------------------------------+--------+
|x4       |tp        | Thread pointer                    |        |
+---------+----------+-----------------------------------+--------+
|x5       |t0        | Temporary/alternate link register | Caller |
+---------+----------+-----------------------------------+--------+
|x6       |t1        | Temporaries                       | Caller |
+---------+----------+-----------------------------------+--------+
|x7       |t2        | Temporaries                       | Caller |
+---------+----------+-----------------------------------+--------+
|x8       |s0/fp     | Saved register/frame pointer      | Callee |
+---------+----------+-----------------------------------+--------+
|x9       |s1        | Saved register                    | Callee |
+---------+----------+-----------------------------------+--------+
|x10      |a0        | Function arguments/return values  | Caller |
+---------+----------+-----------------------------------+--------+
|x11      |a1        | Function arguments/return values  | Caller |
+---------+----------+-----------------------------------+--------+
|x12      |a2        | Function arguments                | Caller |
+---------+----------+-----------------------------------+--------+
|x13      |a3        | Function arguments                | Caller |
+---------+----------+-----------------------------------+--------+
|x14      |a4        | Function arguments                | Caller |
+---------+----------+-----------------------------------+--------+
|x15      |a5        | Function arguments                | Caller |
+---------+----------+-----------------------------------+--------+
|x16      |a6        | Function arguments                | Caller |
+---------+----------+-----------------------------------+--------+
|x17      |a7        | Function arguments                | Caller |
+---------+----------+-----------------------------------+--------+
|x18      |s2        | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x19      |s3        | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x20      |s4        | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x21      |s5        | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x22      |s6        | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x23      |s7        | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x24      |s8        | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x25      |s9        | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x26      |s10       | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x27      |s11       | Saved registers                   | Callee |
+---------+----------+-----------------------------------+--------+
|x28      |t3        | Temporaries                       | Caller |
+---------+----------+-----------------------------------+--------+
|x29      |t4        | Temporaries                       | Caller |
+---------+----------+-----------------------------------+--------+
|x30      |t5        | Temporaries                       | Caller |
+---------+----------+-----------------------------------+--------+
|x31      |t6        | Temporaries                       | Caller |
+---------+----------+-----------------------------------+--------+

Floating Point Registers
------------------------

+---------+----------+-----------------------------------+--------+
|Register | ABI Name | Description                       | Saver  |
+=========+==========+===================================+========+
|f0       | ft0      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f1       | ft1      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f2       | ft2      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f3       | ft3      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f4       | ft4      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f5       | ft5      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f6       | ft6      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f7       | ft7      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f8       | fs0      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f9       | fs1      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f10      | fa0      | FP arguments/return values        | Caller |
+---------+----------+-----------------------------------+--------+
|f11      | fa1      | FP arguments/return values        | Caller |
+---------+----------+-----------------------------------+--------+
|f12      | fa2      | FP arguments                      | Caller |
+---------+----------+-----------------------------------+--------+
|f13      | fa3      | FP arguments                      | Caller |
+---------+----------+-----------------------------------+--------+
|f14      | fa4      | FP arguments                      | Caller |
+---------+----------+-----------------------------------+--------+
|f15      | fa5      | FP arguments                      | Caller |
+---------+----------+-----------------------------------+--------+
|f16      | fa6      | FP arguments                      | Caller |
+---------+----------+-----------------------------------+--------+
|f17      | fa7      | FP arguments                      | Caller |
+---------+----------+-----------------------------------+--------+
|f18      | fs2      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f19      | fs3      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f20      | fs4      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f21      | fs5      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f22      | fs6      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f23      | fs7      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f24      | fs8      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f25      | fs9      | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f26      | fs10     | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f27      | fs11     | FP saved registers                | Callee |
+---------+----------+-----------------------------------+--------+
|f28      | ft8      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f29      | ft9      | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f30      | ft10     | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
|f31      | ft11     | FP temporaries                    | Caller |
+---------+----------+-----------------------------------+--------+
