uV4的程序优化选项问题

h_w_m 2013-05-11 05:02:56
我的程序开着优化级别8时,程序是小了,只有5.4K,可是它跑出来的效果根本不是我设计的逻辑,
单步跟踪调试看汇编发现完全乱套的,把优化关掉优人选项选择0,程序编译出来7.4K,不过还好没超过8K,而且运行的效果是我所设计的效果。
不知道是uV4哪一个选顶不合理,只要程序中有大量相似的代码片段,这个优化就可能出大问题,至少我就遇到两回不得不关掉编译器优化的情况,关掉才能跑出正常效果,我刚学C51就选了uV4,这都用一年多了,大家说说,是不是要退回到uV3啊,Keil uVision4都有问题,那个我还没用过的Keil uVision3保不准也有什么其它问题呢,有用过的前辈们给点意见
...全文
226 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
h_w_m 2013-06-14
  • 打赏
  • 举报
回复
好多天没不,都忘了还有个贴没结,不好意思,这会来结个
lbing7 2013-05-20
  • 打赏
  • 举报
回复
引用 5 楼 h_w_m 的回复:
uV4绝对没那么傻,决不会把data、idata、xdata的全局变量优化成寄存器变量,我都说了是大量相似程序片段时才有优化出错情况,哪里关乎volatile什么事呢,再说了,在C51里,还有人用这个关建字么?
当年还用51的时候,确实用过这个关键字
ymm198606 2013-05-16
  • 打赏
  • 举报
回复
STVD的开发环境也有类似情况的;
h_w_m 2013-05-13
  • 打赏
  • 举报
回复
uV4绝对没那么傻,决不会把data、idata、xdata的全局变量优化成寄存器变量,我都说了是大量相似程序片段时才有优化出错情况,哪里关乎volatile什么事呢,再说了,在C51里,还有人用这个关建字么?
lxmlcb 2013-05-13
  • 打赏
  • 举报
回复
我也遇到过这样的问题,不过优化等级只有4级哦,不同的等级运行起来效果都不一样,也不知道什么原因,后来就是优化等级最低的那个才跑通了程序,你上面说的volatile的原因,能具体分析下不?
aydf1 2013-05-12
  • 打赏
  • 举报
回复
注意一些涉及到优化的关键字,例如volatile
xqhrs232 2013-05-11
  • 打赏
  • 举报
回复
还真没注意这样的细节
dceacho 2013-05-11
  • 打赏
  • 举报
回复
我以前也这样想,以为优化后的逻辑和我设想的逻辑不一样,后来经过几次仔细的研究发现的确是我错了. 注意一些涉及到优化的关键字,例如volatile

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧