RV32I has 32 general-purpose 32-bit registers. While hardware treats most identically (except x0), the software Application Binary Interface (ABI) assigns specific roles.
| Register | ABI Name | Description | Saver |
|---|---|---|---|
| x0 | zero | Hardwired to 0. Writes are discarded. | - |
| x1 | ra | Return Address for function calls. | Caller |
| x2 | sp | Stack Pointer. | Callee |
| x3 | gp | Global Pointer. | - |
| x4 | tp | Thread Pointer. | - |
| x5-x7, x28-x31 | t0-t6 | Temporaries. | Caller |
| x8-x9, x18-x27 | s0-s11 | Saved Registers. | Callee |
| x10-x17 | a0-a7 | Function Arguments / Return Values. | Caller |