keil absacc.h头文件volatile的问题

[复制链接]
查看11 | 回复2 | 2021-1-27 06:20:33 | 显示全部楼层 |阅读模式
不是因为这个原因absacc.h才加volatile的吧,这明明是对第二个单元赋值4次。编译器会优化成一次?如果这样,编译器怕不是有毒?寄存器读取是比RAM要快的,我觉得是51通用寄存器不多才这样?毕竟加了这个关键字就必须从内存取值了,而不是寄存器。



分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:20:33 | 显示全部楼层
单就那4条指令来说,不考虑volatile情况,直接执行最后条,和按顺序执行最终结果都一个样,

回复

使用道具 举报

千问 | 2021-1-27 06:20:33 | 显示全部楼层
不只是51,很多单片机都会自动优化,只执行最后一句。有一些编译环境还可以对语句执行是否需要优化进行设置,keil就可以进行这样的设置。像楼主举得这个例子,肯定会被优化的。加上volatile关键词就可以了,这样就会老老实实的执行,而不会被优化。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行