第21行:在准备好函数调用的参数(a,b分别在w0和w1寄存器内)后,branch & link指令完成两件工作: 将pc+4的值存入x30寄存器,其中,pc表示当前指令地址(第21行),pc+4即指向当前指令的下一条,也就是第22行。 跳转到add()函数函数,即第2行。 当add()函数完成任务后,第11行ret指令将返回x30寄存器标识的地址继续...
TIPS:arm架构下一般调用都会使用这种指令, stp x29, x30, [sp,#immediate]! 有叹号或者无叹号 因此在每一层的frame都保存了上一层frame的栈顶地址和LR指令,通过准确找到底层的frame 0栈顶后,就可以快速推导出所有的调用关系(红色虚线圈出来的部分),函数的反解依赖符号表,只要原始的elf文件的symbol段没有strip掉...