ARM指令集

一、ARM指令的格式和分类

在这里插入图片描述

经典ARM指令格式如下:

{} {S} ,

<> 为必选项,{}为可选项

为操作码,如ADD表示算术加操作指令

{} 决定指令执行条件域

{S} 决定指令执行是否影响CPSR寄存器的值

为目的寄存器

的第一个操作数为寄存器

为第二个操作数

二、ARM指令条件执行及标志位

ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的

这样可以提高代码密度,减少分支跳转指令数目,提高性能。

默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位

CMP不需要增加 “S”就可改变相应的标志位。

使用条件码可以实现高效的逻辑操作,节省跳转和条件语句,提高代码效率

如果指令不标明条件码,将默认为无条件(AL)执行。

条件码表

在这里插入图片描述

三、跳转指令

跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序的跳转,一种是使用跳转指令直接跳转,另一种是直接向PC寄存器赋值实现跳转。

B{条件} 目标地址

B指令最简单的跳转指令,一旦遇到一个B指令,ARM处理器立即跳转至给定的目标地址,由此处继续执行。跳转指令B限制在当前指令的土32MB范围内

BL{条件} 目标地址

BL是一另个跳转指令,在跳转前会将下一条指令的地址复制到R14中,然后跳转到指定的地址运行程序。可以通过将R14的内容重新加载到PC中,并返回到跳转指令之后的那个指令处执行。 BL是实现子程序调用的一个基本但常用的手段。

BLX{条件} 目标地址

BLX指令从ARM指令集跳转到指令中所指定的目标地址,并将处理器的工作状态由ARM状态切换到Thumb状态,该指令同时将PC的当前内容到寄存器R14中。当程序使用Thumb指令集,而调用者使用ARM指令集时,可以通过BLX指令实现程序的调用和处理器工作状态的切换。子程序的返回可以通过将寄存器R14复制到PC中来完成。

BX{条件} 目标地址

BX指令是带状态切换的跳转指令,跳转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值