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