3256|5

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

奇怪啊,难道是优化设计不合理?(STM8S) [复制链接]

环境:STM8S105,RLINK,swim接口,STVD,COSMIC。
lReg定义为局部变量;GPIOG_PIN_0已配置为输入口(图中可以看到GPIO->DDR为0x02);
为什么lReg的值为0呢?我试了下将断点设在红线处(597行)时,单步运行,lReg是0x01。。。全速运行却始终为0。。。

WHY???
此帖出自stm32/stm8论坛

最新回复

                                     详情 回复 发表于 2009-6-3 20:09
点赞 关注
 

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

如果怀疑是编译器优化的问题,可以检查一下反汇编指令

                                 一般讲,如果你的程序中没有其它部分(贴出的图看不到)再用到局部变量lReg的内容,编译器完全可以把它优化掉。
此帖出自stm32/stm8论坛
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

这个变量可能被分配到了寄存器中,如果接下来不再用了,

                                 那么就可能被分配到其它用途,从而它的值发生了变化。
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 

那么:如果我把lReg定义为……

3Q两位。。。

那么:如果我把lReg定义为static的全局变量,理论上不会出现上述情况,对否?

明天试下再看看是否可行。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 

恩。定义为static的局部变量或者全局变量,就不会出现了

                                 当然,如果一直没有读访问,只有写访问的话,也可能被优化掉的。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 

换成static、volatile也还是不行。。。

                                  
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表