ARM技术论坛
直播中

贾虎世

7年用户 1686经验值
私信 关注
[经验]

关于thumb指令中的IT block描述

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

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


IT指令的指令编码如下:


其汇编描述:


◾first cond:决定IT block块中第一条指令的条件
◾mask:决定IT block块中,有几条条件执行指令

一、IT域的初始值

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

图中的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域填充如下值


比如如下指令
ITEE PL(PL的编码是0101)
根据ITTE,确定出之后的IT block,有3条指令。并且第0条,和PL条件一致,第1条,第2条和PL条件相反。此时CPSR中的IT域填充如下值:

二、IT域的变化

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

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


三、IT block的局限

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

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


更多回帖

发帖
×
20
完善资料,
赚取积分