最近在看 ios 的 inline hook,免不了需要了解一下 arm64 汇编的知识,以及如何通过xcode去查看和调试汇编代码。
1、如果通过XCode查看汇编代码
在调用处添加断点,然后依次选择Xcode菜单中的 Debug->Debug Workflow->Always Show Disassembly
命令后,就直接以汇编代码呈现了:
2、如何通过Xcode查看核心寄存器变量
ARM64有31个通用寄存器X0~X30
,每个寄存器可以存取一个64位的数据,除了X0~X30
寄存器外,还有一个SP
寄存器非常重要。下面介绍iOS工程中关注频率最高的一些寄存器。
- X0~X7:用来传递函数的参数,如果有更多的参数则使用栈来传递:X0也用来存放函数的返回值。
- SP(Stack Point):栈指针寄存器。指向栈的顶部。
- FP (Frame Pointer):即X29,帧指针寄存器。指向栈的底部。
- LR(Link Register):即X30,链接寄存器。存储着函数调用完成时的返回地址,用来做函数调用栈跟踪,程序在崩溃时能够将函数调用栈打印出来就是借助LR寄存器来实现的。
- PC(Program Counte