ARM架构中,等效于eip/rip的是程序计数器(PC寄存器),等效于ebp/rbp的是帧指针寄存器(FP寄存器),等效于UESP/rsp的是栈指针寄存器(SP寄存器)。
在ARM汇编语言中,PC寄存器存储着下一条指令的地址,FP寄存器存储着当前栈帧的基地址,在函数调用时可用于访问函数的参数。SP寄存器存储着栈顶地址,用于储存局部变量以及函数的返回值。
例如,在ARM汇编中,使用PC寄存器可以实现跳转语句:
B label ; 跳转到指定标号处
BL label ; 跳转到指定标号处,同时保存返回地址到LR寄存器
BX reg ; 跳转到reg寄存器中存放的地址
在函数中,使用FP寄存器和SP寄存器可以访问局部变量和函数参数:
PUSH {FP,LR} ; 保存当前栈帧的基地址和返回地址到栈中
MOV FP,SP ; 将当前栈顶地址赋值给FP,作为当前栈帧的基地址
SUB SP,SP,#8 ; 为局部变量分配8个字节空间
STR R0,[FP,#-4] ; 将函数的第一个参数存储在当前栈帧中的FP-4字节处
在Aarchh64架构中,同样存在PC寄存器、FP寄存器和SP寄存器,但寄存器的名称不同,并被称为