微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM Cortex-M3 学习笔记(4-4)

ARM Cortex-M3 学习笔记(4-4)

时间:11-20 来源:互联网 点击:

数、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 ;围起1条指令的IF-THEN块

IT ;围起2条指令的IF-THEN块

IT ;围起3条指令的IF-THEN块

IT ;围起4条指令的IF-THEN块

其中, ,的取值可以是“T”或者“E”。下面是个例子:

要实现如下的功能:

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判断,能够被这么优化。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top