位置:51电子网 » 技术资料 » 嵌入式系统

ARM指令集

发布时间:2008/12/22 0:00:00 访问次数:570

  arm指令集可以分为6类,即跳转指令、数据处理指令、程序状态寄存器(psr)传输指令、load/store指令、协处理器指令和异常中版产生指令。下面分别对这6种指令进行介绍。

  1.跳转指令

  在arm中有两种方式可以实现程序的跳转:一种是刀‘转指令;另一种是直接向pc寄存器(r15)中写入目标地址值。

  通过直接向pc寄存器中写入目标地址值可以实现在46b地址空间中任意跳转,这种跳转指令又称为长跳转。如果在长跳转指令之前使用mov lr,pc等指令,则可以保存将来返回的地址值,这样就实现了在46b地址空间中的子程序调用。

  在arm版本5及以上的体系中,实现了arm指令集和thumb指令集的混合使用。指令使用目标地址值的bit[0]来确定目标程序的类型。bit[0]的值为1时,目标程序为thumb指令;bit[0]值为0时,目标程序为arm指令。

  在arm版本5以前的体系中,传送到pc寄存器中的目标地址值的低两位bits[1∶0]被忽略,跳转指令只能在arm指令集中执行,即程序不能从arm状态切换到thumb状态。非t系列arm版本5体系不含thumb指令,当程序试图切换到thumb状态时,将产生未定义指令异常中断。

  arm跳转指令可以从当前指令向前或向后的32mb地址空间跳转。这类跳转指令有以下4种。

  (1)b 跳4专指令

  b〔条件) (地址)

  b指令属于arm指令集,是最简单的分支指令。一旦遇到一个b指令,arm处理器将立即跳转到给定的地址,从那里继续执行。注意:存储在分支指令中的实际值是相对当前r15的值的一个偏移量,而不是一个绝对地址。它的值由汇编器来计算,是24位有符号数,左移两位后有符号扩展为32位,表示的有效偏移位为26位(+/- 32 mb)。

  (2)bl 带返回的跳转指令

  bi,〔条件) (地址)

  bl指令也属于arm指令集,是另一个分支指令。就在分支之前,在寄存器r14中装载上r15的内容,因此可以重新装载r14到r15中来返回到这个分支之后的那个指令处执行,它是子例程的一个基本但强力的实现。

  (3)blx 带返回和状态切换的跳转指令

  blx <地址>

  blx指令有两种格式,第1种格式的blx指令记作blx(1)。blx(1)从arm指令集跳转到指令中指定的目标地址,并将程序状态切换到thumb状态,该指令同时将pc寄存器的内容复制到lr寄存器中。

  blx(1)指令属于无条件执行的指令。

  第2种格式的blx指令记作blx(2)。blx(2)指令从arm指令集跳转到指令中指定的目标地址,目标地址的指令可以是arm指令,也可以是thumb指令。目标地址放在指令中的寄存器<dest>中,该地址的bit[0]值为0,目标地址处的指令类型由cpsr中的t位决定。该指令同时将pc寄存器的内容复制到lr寄存器中。

  (4)bx 带状态切换的跳转指令

  bx(条件) (dest)

  bx指令跳转到指令中指定的目标地址,目标地址处的指令可以是arm指令,也可以是thumb指令。目标地址值为指令的值和0xfl·ffffff做“与”操作的结果,目标地址处的指令类型由寄存器决定。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



  arm指令集可以分为6类,即跳转指令、数据处理指令、程序状态寄存器(psr)传输指令、load/store指令、协处理器指令和异常中版产生指令。下面分别对这6种指令进行介绍。

  1.跳转指令

  在arm中有两种方式可以实现程序的跳转:一种是刀‘转指令;另一种是直接向pc寄存器(r15)中写入目标地址值。

  通过直接向pc寄存器中写入目标地址值可以实现在46b地址空间中任意跳转,这种跳转指令又称为长跳转。如果在长跳转指令之前使用mov lr,pc等指令,则可以保存将来返回的地址值,这样就实现了在46b地址空间中的子程序调用。

  在arm版本5及以上的体系中,实现了arm指令集和thumb指令集的混合使用。指令使用目标地址值的bit[0]来确定目标程序的类型。bit[0]的值为1时,目标程序为thumb指令;bit[0]值为0时,目标程序为arm指令。

  在arm版本5以前的体系中,传送到pc寄存器中的目标地址值的低两位bits[1∶0]被忽略,跳转指令只能在arm指令集中执行,即程序不能从arm状态切换到thumb状态。非t系列arm版本5体系不含thumb指令,当程序试图切换到thumb状态时,将产生未定义指令异常中断。

  arm跳转指令可以从当前指令向前或向后的32mb地址空间跳转。这类跳转指令有以下4种。

  (1)b 跳4专指令

  b〔条件) (地址)

  b指令属于arm指令集,是最简单的分支指令。一旦遇到一个b指令,arm处理器将立即跳转到给定的地址,从那里继续执行。注意:存储在分支指令中的实际值是相对当前r15的值的一个偏移量,而不是一个绝对地址。它的值由汇编器来计算,是24位有符号数,左移两位后有符号扩展为32位,表示的有效偏移位为26位(+/- 32 mb)。

  (2)bl 带返回的跳转指令

  bi,〔条件) (地址)

  bl指令也属于arm指令集,是另一个分支指令。就在分支之前,在寄存器r14中装载上r15的内容,因此可以重新装载r14到r15中来返回到这个分支之后的那个指令处执行,它是子例程的一个基本但强力的实现。

  (3)blx 带返回和状态切换的跳转指令

  blx <地址>

  blx指令有两种格式,第1种格式的blx指令记作blx(1)。blx(1)从arm指令集跳转到指令中指定的目标地址,并将程序状态切换到thumb状态,该指令同时将pc寄存器的内容复制到lr寄存器中。

  blx(1)指令属于无条件执行的指令。

  第2种格式的blx指令记作blx(2)。blx(2)指令从arm指令集跳转到指令中指定的目标地址,目标地址的指令可以是arm指令,也可以是thumb指令。目标地址放在指令中的寄存器<dest>中,该地址的bit[0]值为0,目标地址处的指令类型由cpsr中的t位决定。该指令同时将pc寄存器的内容复制到lr寄存器中。

  (4)bx 带状态切换的跳转指令

  bx(条件) (dest)

  bx指令跳转到指令中指定的目标地址,目标地址处的指令可以是arm指令,也可以是thumb指令。目标地址值为指令的值和0xfl·ffffff做“与”操作的结果,目标地址处的指令类型由寄存器决定。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



上一篇:ARM数据处理指令

上一篇:ARM指令介绍

相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!