代码改变世界

iOS安全攻防(十一)arm汇编之寄存器简介

2014-12-13 21:10  16字节  阅读(1698)  评论(2编辑  收藏  举报

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

iOS安全攻防必须掌握arm汇编,这里先简要介绍arm中寄存器。

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

R0-R3:用于函数参数及返回值的传递,调用函数的时候,参数先从R0依次传递

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

R7:栈帧指针(Frame Pointer),相对与SP,R7就是栈底,在进入新一个栈帧之后先把原来的R7压栈,然后R7保存当前SP。

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