那一段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计算得到的啊。。