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

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

此问题尚无答案
All Replies
  • 秀才40分

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

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

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

  • 秀才40分

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

  • 榜眼26085分

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

    上述内容如果回答了您的问题,请点击标签栏“是”按钮。您的轻轻一点,会帮助我们更好的管理论坛内容,谢谢!

  • 秀才70分

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

  • 秀才40分

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