Integer registers
General purpose
| Register | ABI name | Convention | Saver |
|---|---|---|---|
x0 |
zero |
Hard-wired zero | |
x1 |
ra |
Return address | caller |
x2 |
sp |
Stack pointer | caller |
x3 |
gp |
Global pointer | |
x4 |
tp |
Thread pointer | |
x5 |
t0 |
Temporary or alternate link register | caller |
x6 |
t1 |
Temporary | caller |
x7 |
t2 |
Temporary | caller |
x8 |
s0/fp |
Saved register or frame pointer | callee |
x9 |
s1 |
Saved register | callee |
x10 |
a0 |
Function argument or return value | caller |
x11 |
a1 |
Function argument or return value | caller |
x12 |
a2 |
Function argument | caller |
x13 |
a3 |
Function argument | caller |
x14 |
a4 |
Function argument | caller |
x15 |
a5 |
Function argument | caller |
x16 |
a6 |
Function argument | caller |
x17 |
a7 |
Function argument | caller |
x18 |
s2 |
Saved register | callee |
x19 |
s3 |
Saved register | callee |
x20 |
s4 |
Saved register | callee |
x21 |
s5 |
Saved register | callee |
x22 |
s6 |
Saved register | callee |
x23 |
s7 |
Saved register | callee |
x24 |
s8 |
Saved register | callee |
x25 |
s9 |
Saved register | callee |
x26 |
s10 |
Saved register | callee |
x27 |
s11 |
Saved register | callee |
x28 |
t3 |
Temporary | caller |
x29 |
t4 |
Temporary | caller |
x30 |
t5 |
Temporary | caller |
x31 |
t6 |
Temporary | caller |
Standard calling convention
Hardware may treat these specially for better performance.
x1- Holds return address for the call
x2- Stack pointer
x5- Alternate link register
The optional compressed instruction format depends on these conventions for x1 and x2.
Notes
Writes to x0 are always discarded, and reads from x0 always returns 0.
Special purpose
pc- Program counter
See also
References
[1]
Andrew Waterman and Krste Asanović (Eds.). 2019. The RISC-V instruction set manual, volume I: User-level ISA, document version 20191213. RISC-V Foundation. Document Version 20191213