凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Thumb转移指令之一

已有 532 次阅读| 2016-1-15 18:27

ARM指令集中已介绍过多种形式的转移指令和转移链接指令以及用于ARMThumb状态切换的跳转指令。

ARM指令有一个大的偏移域,这不可能在16Thumb指令格式中表示。为此Thumb指令集有多种方法实现其子功能。

Thumb转移指令二进制编码如图所示。

转移指令的典型用法有:

短距离条件转移指令可用于控制循环的退出。

中等距离的无条件转移指令用于实现goto功能。

长距离的转移指令用于子程序调用。

Thumb指令集对每种情况采用不同的指令模式,分别如图所示。前2种转移格式是条件域和偏移长度的折中。第一种格式中条件域与ARM指令相同。前2种格式的偏移值都左移一位,以实现半字对齐,并符号扩展到32位。格式中,Thumb采用2种这样格式的指令组合成22位半字偏移并符号扩展为32位,使指令转移范围为±4MB。这是因为专一指令链接子程序通常需要一个大的范围,很难用16位指令格式实现。为了使者2条指令相互独立,使它们之间也能响应中断等,所以将链接寄存器LR作为暂存器使用。LR在这2条指令执行完后会被覆盖,因此LR中不能装有有效内容。这个指令对的操作为:

(H=0)            LR<-PC+(偏移量左移12后符号扩展至32)

(H=1)            PC<-LR+(偏移量左移1)LR<-oldPC+3

这里,oldPC是第2条指令的地址;加3使产生的地址指向下一条指令并且使最低位置位以指示这是一个Thumb程序。用格式(3a)的指令代替上面的第2步就可实现BLX指令。格式(3a)只在V5T结构中有效。它使用与上面的BL指令同样的第1步:

BLH=0       LR<-PC+(偏移量左移12后符号扩展至32位);

BLX              PC<-LR+(偏移量左移1)&0xFFFFFFFCLR<- oldPC+3,清Thumb指示位。

应注意,该形式的指令转移的目标是ARM指令,偏移地址只需要10位,而且必须对PC值的位1进行清0操作。格式(4)直接对应ARM指令B{L}X,不同之处是,BLX指令中R14值为后续指令地址加1,以指示是被Thumb代码调用。指令中H1时,选择高8个寄存器(R8~R15)。

汇编格式

B                   <cond><lable>       ;格式(1    目标位Thumb代码

B                   <lable>                 ;格式(2    目标为Thumb代码

BL                 <lable>                 ;格式(3    目标为Thumb代码

BLX              <lable>                 ;格式(3a   目标为ARM代码

B{L}X           Rm                       ;格式(4    目标位ARMThumb代码

转移链接产生两条格式(3)指令。格式(3)指令必须成对出现而不能单独使用。同样,BLX产生一条格式(3)指令和一条指令(3a)指令。汇编器根据当前指令地址、目标指令标识符的地址以及对流水线行为的微调,计算出应插入指令中相应的偏移量。若转移目标不在寻址范围内,则给出错误信息。

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


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

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

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

GMT+8, 2024-3-29 07:20 , Processed in 0.015195 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部