TI中文支持网
TI专业的中文技术问题搜集分享网站

关于一个do while循环开优化选项后出错的问题

那一段do…while循环的代码是这样的

发现开了O3选项之后输出结果就不对了, 变量c和d分别是unsigned int和unsigned int *的变量,把SPLOOP关闭以及打开优化以后的汇编代码如下:

请问一下关于这类问题是什么原因导致的呢? 还有就是有哪些资料我可以去参考一下的呢? 谢谢!

weibin li:

调试了一下发现, 对应汇编代码中的A0就是变量c, 汇编代码第6920行中需要当c不为0的时候才把A5的地址指向的值加载到A3中,这里的A3应该就是*d的值,调试发现当A0为0的时候A3的值并不是变量d指向的值,请问一下这是什么原因导致这种情况出现的呢?

Allen35065:

回复 weibin li:

你的代码里A0即c=0时,并不需要加载d地址的值到A3。

ji wang3:

回复 weibin li:

A5加载完一次数据后,地址累加了吧

weibin li:

回复 Allen35065:

为什么当A0为0的时候不需要将d的值加载进来呢。它下面又会把B5的值给回写到B4指向的地址中,这个B4的值跟A5是一样的都是指向d的,而B5的值是根据A3以及A0计算得到的啊。。

赞(0)
未经允许不得转载:TI中文支持网 » 关于一个do while循环开优化选项后出错的问题
分享到: 更多 (0)