在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1996|回复: 0

[资料] Thumb转移指令之二

[复制链接]
发表于 2016-1-15 18:41:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

1.
B

分支指令。这是Thumb指令集中惟一可以条件执行的指令。

句法

B{cond}lable

B            lable

其中:lable是程序相对偏移表达式。通常是在同一代码内的标号。若使用cond,则lable必须在当前指令的-256~+256字节范围内;若指令是无条件的,则lable必须在±2KB范围内。

用法

cond满足或不使用cond,则B指令引起处理器转移到lablelable必须在指定范围内。ARM链接器不能增加代码来产生更长的转移。

例子

B            loop

BLT        sectB

2.
BL

带链接的长分支

句法

BL          lable

其中:lable为程序相对转移表达式。

用法

BL指令将下一条指令的地址拷贝到R14,并引起处理器转移到lableBL指令不能转移到当前指令±4MB以外的地址。必要时,ARM链接器插入代码以允许更长的转移。

例子

BL          subC

1.
BX

分支指令,并可有选择地切换指令集

句法

BX         Rm

其中:Rm装有分支目的地址的ARM寄存器。Rm的位[0]不用地址部分。若Rm的位[0]0.则位[1]也必须清0(因为在ARM状态下,地址是字对齐的,所以最后2位必须为00);指令清除CPSR中的标志T,目的地址的代码被解释为ARM代码。

用法

BX指令引起处理器转移到Rm存储的地址。若Rm的位[0]置位,则指令集切换到Thumb状态。若Rm的位[0]0,则指令集切换到ARM状态。

例子

MOV             R7to_Thumb+1

BX                R7                        ;R7的位[0]被置为1,所以指令集切换到Thumb状态。

BLX

带链接分支,并可有选择地交换指令集。

句法

BLX       Rm

BLX       lable

其中:Rm装有分支目的地址的ARM寄存器。Rm的位[0]不用于地址部分。若Rm的位[0]0,则位[1]也必须清0;指令清除CPSR中的标志T,目的地址的代码被解释为ARM代码。Lable是程序相对偏移表达式。“BLX lable”始终引起处理器切换到ARM状态。

用法

BLX指令可用于:

拷贝下一条指令的地址到R14

引起处理器转移到lableRm存储的地址;

如果Rm的位[0]0,或使用“BLX lable”形式,则指令集切换到ARM状态。

例子

BLX       R2

BLX       R0

BLX       armsub

指令不能转移到当前指令±4MB范围以外的地址。必要时,ARM链接器插入代码以允许更长的转移。这条代码的作用就是使Thumb采用2BLX指令组合成22位的半字偏移,最终使得指令范围为±4MB

注意:BLX指令只有V5T结构的ARM微处理器支持。

子程序调用及返回

ARMThumb状态下,通常用BL指令来调用子程序。在不同的情况下有不同的返回方法,如下所述:

如果子程序由相同的指令集调用,则它可用传统的BL调用,用“MOV  PC,R14或“LDMFD SP!,{…,PC}”返回。如果子程序由不相同的指令集调用,则可用“BX  LR”或“LDMFD SP!,{…,rN};BX           rN”返回。支持V5T的结构的ARM微处理器也可用“LDMFD  SP!,{… ,PC}”返回,因为这些指令采用装载的PC值的最低位来更新Thumb标志位。早于V5T结构的微处理器不支持这样的用法。

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-10 20:50 , Processed in 0.013303 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表