首页 > 代码库 > [iOS逆向实战 之一]arm寄存器简介

[iOS逆向实战 之一]arm寄存器简介

个人原创,转帖请注明来源:cnblogs.com/jailbreaker

[iOS逆向实战]这个系列的帖子,会涉及到arm汇编,以及调试工具的使用,加上实战解析一步步逆向,深入浅出。

这是第一篇帖子,简要说下arm的各个寄存器的功能。

R0-R3:用于函数参数及返回值的传递

R4-R6, R8, R10-R11:没有特殊规定,就是普通的通用寄存器

R7:栈帧指针(Frame Pointer).指向前一个保存的栈帧(stack frame)和链接寄存器(link register, lr)在栈上的地址。

R9:操作系统保留

R12:又叫IP(intra-procedure scratch ), 要说清楚要费点笔墨,参见http://blog.csdn.net/gooogleman/article/details/3529413

R13:又叫SP(stack pointer),是栈顶指针

R14:又叫LR(link register),存放函数的返回地址。

R15:又叫PC(program counter),指向当前指令地址。

CPSR:当前程序状态寄存器(Current Program State Register),在用户状态下存放像condition标志中断禁用等标志的。

     在其它系统状态中断状等状态下与CPSR对应还有一个SPSR,在这里不详述了。

 

参考:https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html

[iOS逆向实战 之一]arm寄存器简介