# ARM 64通用寄存器

ARM 64提供了31个通用寄存器，各寄存器的名称和用途如表1所示。


**表1 ARM64通用寄存器介绍**

| 寄存器名称 | 用途 |
| --- | --- |
| x0~x7 | 用于传递子程序的参数，使用时不需要保存，多余参数保存在调用者栈中，通过栈传递给被调用函数。其中x0寄存器还可以作为返回值寄存器使用。 |
| x8 | 间接结果寄存器，使用时不需要保存，一般用于传递间接结果的地址，比如函数返回一个大的结构体，x8保存结构体地址。 |
| x9~x15 | 临时寄存器，子程序使用时不需要保存。 |
| x16~x17 | 又名IP0、IP1，内部过程调用寄存器，常用于动态链接中的plt寻址等指令。 |
| x18 | 平台预留寄存器，在不同的操作系统使用不一样。 |
| x19~x28 | 临时寄存器，子程序使用时必须保存。 |
| x29 | 帧指针寄存器（FP），用于连接栈帧，使用时必须保存。 |
| x30 | 链接寄存器（LR），用于保存子程序的返回地址。 |
