ARM Cortex-M3 学习笔记(4-4)
数、B是正数,结果D可能是正数(V==1 && N==0)也可能是负数(V==0&& N==1),与上面的情况类似,V如果等于1了,Z必然等于0,所以还是不用考虑Z。
综合上面六种情况,我们可以得到:
A>B 等价于 Z==0 && V==N
A
有了上面的分析,下面两种情况就很容易得到答案了。
对于A>=B,V==N 就足够了
对于A<=B,Z==1 || V!= N
IF-THEN 指令块
IF-THEN(IT)指令块在其他的单片机中没有见过,这里值得讲一讲。
IF-THEN(IT)指令围起一个块,里面最多有4条指令,它里面的指令可以条件执行。
IT的使用形式如下:
IT
IT
IT
IT
其中
要实现如下的功能:
if (R0==R1)
{
R3 = R4 + R5;
R3 = R3 / 2;
}
else
{
R3 = R6 + R7;
R3 = R3 / 2;
}
可以写作:
CMP R0, R1 ; 比较R0和R1
ITTEE
ADDEQ R3, R4, R5 ; 相等时加法EQ ; 如果R0 == R1,Then-Then-Else-Else
ASREQ R3, R3, #1 ; 相等时算术右移
ADDNE R3, R6, R7 ; 不等时加法
ASRNE R3, R3, #1 ; 不等时算术右移
IT指令块的初衷应该是避免了在执行转移指令时,对流水线的清洗和重新指令预取的开销,但是最多只能有四条指令,使它的使用范围也很受限。可能也就是C语言中用到“:?”运算符的地方比较容易汇编为IT指令块了。还有个边很短小的if判断,能够被这么优化。
ARMCortex-M 相关文章:
- 让ARM Cortex-M7再想一一会儿(11-26)
- ARM CORTEX-M3 内核架构理解归纳(11-21)
- ARM Cortex-M3 内核介绍(11-21)
- ARM Cortex-M3 学习笔记(4-5)(11-20)
- ARM Cortex-M3 学习笔记(4-6)(11-20)
- ARM Cortex-M3 学习笔记(6)(11-20)