背景:
由于一些任务上需要用到crash tool 来分析系统的崩溃问题,要对内存进行推栈分析
ARM 寄存器
AArch64架构提供了31个通用寄存器,每个寄存器都可以用作64位X寄存器(X0~X30)或32位W寄存器(W0~W30)。对于数据处理指令,X或W的选择决定了操作的size。使用X寄存器将导致64位的计算,使用W寄存器将导致32位的计算。当写入W寄存器时, 64位寄存器的高32位为零。
X0: 也称为零寄存器,用于存储函数的返回值、传递函数参数和临时存储变量。
X1-X7: 用于传递函数参数和临时存储变量。
X8: 也称为程序计数器(PC),用于存储当前正在执行的指令的地址。当处理器执行一条指令时,PC会自动递增以指向下一条指令。
X9-X15: Caller Saved寄存器,用于存储函数参数、局部变量和临时数据。
X16-X17: 也称为临时寄存器,用于存储临时数据,这些寄存器在函数调用期间不需要保留其值。
X18: 也称为平台相关寄存器,用于存储与特定平台相关的信息,如TLS(线程本地存储)指针。
X19-X28: Callee Saved寄存器,于存储函数参数、局部变量和临时数据。
X29: 也称为帧指针寄存器(Frame Pointer,FP),用于存储当前函数的堆栈帧指针。当函数调用发生时,x29寄存器的值被保存到堆栈中,以便在函数执行期间可以轻松地访问上一级函数的堆栈帧。这样,当函数返回时,可以通过恢复x29寄存器的值来恢复到正确的堆栈帧。
X30: 也称为链接寄存器(Link Register,LR),用于存储函数调用的返回地址。当函数执行完毕时,处理器将使用x30寄存器中存储的返回地址来恢复到调用点。这样&#x