ARM汇编入门:寄存器与指令跳转

在嵌入式开发或Android逆向研究时,学习arm汇编必不可少

寄存器(用户模式)

寄存器特定名称过程调用的角色
R16CPSR(Computer Program Status Register)状态寄存器
R15PC(Program Counter)程序计数器
R14LR(Link Register)链接寄存器(用于存放函数返回地址)
R13SP(Stack Pointer)栈指针
R12IP(Internal Procedure )内部过程调用临时寄存器
R11-ARM状态局部变量寄存器 - 8
R10SL(Stack Limit)ARM状态局部变量寄存器 - 7/栈检查中的栈限制指针
R9SB(Static Base)ARM状态变量寄存器 - 6/RWPI变体中的静态基址
R8-ARM状态变量寄存器 - 5
R7-局部变量寄存器 - 4
R6-局部变量寄存器 - 3
R5-局部变量寄存器 - 2
R4-局部变量寄存器 - 1
R3-参数/结果/暂时寄存器 - 4
R2-参数/结果/暂时寄存器 - 3
R1-参数/结果/暂时寄存器 - 2
R0-参数/结果/暂时寄存器 - 1

指令跳转

//在arm汇编中,有两种调准方式
//1.通过跳转指令实现
//2.通过修改PC寄存器的值实现
//具体可以参考下面连接

Android ARM常用的汇编指令合集

其中寄存器的使用必须满足下面的规则:
(1)函数间通过寄存器 R0~R3 来传递参数,低于 32 位的函数返回值存于 R0。
(2)在函数中,使用寄存器 R4~R11 来保存局部变量。函数进入时必须保存所用到的局部变量寄存器的值,在返回前必须恢复这些
寄存器的值;对于函数中没有用到的寄存器则不必进行这些操作。在 Thumb 中,通常只能使用寄存器 R4~R7 来保存局部变量。
(3)寄存器 R12 用作函数间的 scratch 寄存器,记作 IP
(4)寄存器 R13 用作数据栈指针,记作 SP。函数调用前后必须保持堆栈平衡。
(5)寄存器 R14 称为连接寄存器,记作 LR。它用作保存函数的返回地址。如果在函数中保存了返回地址,寄存器 R14 则可以用作其他用途。
(6)寄存器 R15 是程序计数器,记作 PC。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值