[原创] 在 IAR debug 模式下使用 option优化MSP430代码

hansonhe   2012-4-25 08:23 楼主

IAR debug模式 默认option选择 low,release模式下默认选择 high,代码在选择low时运行正常,设置为high就出错 ,如下

data[] ={0xAA,0x11};
if ((data[0]&0x0f) == 0x00)
{
..............
}

low设置下可以进入,high设置下程序首次运行可以进入,以后就不能进入了。debug调试发现运行时判断条件值竟然为data[0]的值,也就是0xAA

 

分析原因,data[0]值已赋值,如果期间未被改变时,判断条件也会变成确定值会被优化掉。

由于data[0]的值已确定,判断的条件的值也已确定,所以会被优化。可以改为如下进行测试
volatile char a;
a=1;
data[0]=a;//保证data[0]的值不是确定的
uint8 tmp;

tmp = data[0]&0x0f;

if(tmp == 0x00)

[ 本帖最后由 hansonhe 于 2012-4-25 08:25 编辑 ]

回复评论 (1)

很好的经验分享
点赞  2012-4-25 08:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复