General purpose registers
AArch64 has 32 general purpose registers numbered 0 to 31. Each has a 64-bit name beginning with X and a 32-bit alias beginning with W that names the same storage, minus the upper half. Number 31 is special: it means the stack pointer or the zero register, never both at once.
The 64-bit view. Every register is 64 bits wide, and the W aliases below are the low 32 bits of each one.
Argument 0 / return value 0
Argument 1 / return value 1
Argument 2
Argument 3
Argument 4
Argument 5
Argument 6
Argument 7
Indirect result location register
Temporary (platform register)
Temporary (platform register)
Temporary (platform register)
Temporary (platform register)
Temporary (platform register)
Temporary (platform register)
Temporary (platform register)
IP0 (first intra-procedure-call scratch register)
IP1 (second intra-procedure-call scratch register)
IP2 (third intra-procedure-call scratch register)
Callee-saved (platform register)
Callee-saved (platform register)
Callee-saved (platform register)
Callee-saved (platform register)
Callee-saved (platform register)
Callee-saved (platform register)
Callee-saved (platform register)
Callee-saved (platform register)
Callee-saved (platform register)
Callee-saved (platform register)
Frame pointer (FP)
Link register (LR)
Stack pointer