卢骏 · 2020年05月14日

AArch32中thumb指令的IT block

IT block是thumb指令集中引出来的东西,用来解决thumb指令不能条件执行的缺点。可以通过IT指令,给后续的1到4条指令,决定其执行条件。

IT block的信息,存放在PSTATE中,在thumb指令集中,也就是存在CPSR中。存放在CPSR的IT域。
1.png

IT指令的指令编码如下:
2.png

其汇编描述:
3.png

◾first cond:决定IT block块中第一条指令的条件

◾mask:决定IT block块中,有几条条件执行指令

一、IT域的初始值

那CPSR中的IT域是如何记录IT block的状态的。

IT域在初始的时候,是如下记录IT block状态的。

4.png

图中的N1,N2,N3,N4,对应IT指令之后的4条指令。

IT指令,在译码的时候,根据firstcond和mask域,就可以知道,后续有几条指令,会在IT block中,以及每条指令执行的条件。然后根据有几条指令,将对应的值,填充到CPSR的IT域中。

比如如下指令

ITTET EQ(EQ的编码是0000)

根据ITTET,确定出之后的IT block,有4条指令。并且第0条,第1条,第3条和EQ条件一致,第2条和EQ条件相反。此时CPSR中的IT域填充如下值

微信截图_1.png

比如如下指令

ITEE PL(PL的编码是0101)

根据ITTE,确定出之后的IT block,有3条指令。并且第0条,和PL条件一致,第1条,第2条和PL条件相反。此时CPSR中的IT域填充如下值: 微信截图_2.png

二、IT域的变化

以上只是CPSR的IT域的初始值,那么在执行IT block中指令过程中,IT域又是如何变化的呢?

下图是IT域随着IT block中4条指令的执行情况的变化表。可以看出,IT[7:5]不变,IT[4:0]在执行完一条指令之后,就左移一位。IT[7:4]组成新的条件码,来决定指令的运行条件。
5.png

三、IT block的局限

处于IT block中的指令,其条件,要不就是和IT指令限定的条件相同,要不就是相反,不能有其他情况,不能像A32那样,可以灵活的为每条指令,设定执行条件。

下图是arm定义的条件码的编码,可以看出2个条件码一个组合,且最后一个bit是相反的关系。这也是为什么条件码的高3个bit,要存放在IT[7:5]中,剩下一个bit,依赖于IT[4]即可。
6.png

系列其他篇

本文首发个人网站。
原文链接:http://www.lujun.org.cn/
更多Arm技术相关的文章请关注Arm技术博客
推荐阅读
关注数
23520
内容数
973
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息