打印
[STM32F1]

代码精简

[复制链接]
599|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kangzj|  楼主 | 2021-5-5 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CCS编译会把写的繁琐的代码精简吗?
1.比如1234/256和1234》8,这两种哪个更省资源?
2、char a=1; if(a==1)和if(a)一样吗?

3、16位的b右移八位放到8位的a里,还需要 &0xff吗?还是自动变换数据类型的?如果写不写都可以,那写了& 0xff是不是增加了多余的计算步骤?
char a;
int16 b;
a=b >>8 ;
a=b >>8 & 0xff;

使用特权

评论回复
沙发
happy_10| | 2021-5-5 16:03 | 只看该作者
这个具体优化到什么程度要看优化选项的。

使用特权

评论回复
板凳
bqyj| | 2021-5-5 16:05 | 只看该作者
移位一般运算比较快些的。。。

使用特权

评论回复
地板
wenfen| | 2021-5-5 16:07 | 只看该作者
移位比取模快是吧第二个如果a只有或者0两个值,那还一样吗?

使用特权

评论回复
5
zhuhuis| | 2021-5-5 16:09 | 只看该作者
一般情况编译器会自动截取16位数的低8位赋给8位数

使用特权

评论回复
6
ousj| | 2021-5-5 16:11 | 只看该作者
这类问题不同的编译器可能会给出不太一样的结果,最好还是编写个小程序验证一下吧。

使用特权

评论回复
7
supernan| | 2021-5-5 16:13 | 只看该作者
很多时候看情况,移位不一定会比除法快,和芯片以及处理的数据有关,编译器也会对特殊的常量数据优化。。。。

使用特权

评论回复
8
chenho| | 2021-5-5 16:16 | 只看该作者
现在的芯片资源跟原来的不可同日而语,编程时候尽量把意图表示出来,没必要为了省一两个字节或周期而在那里纠结。

使用特权

评论回复
9
zwll| | 2021-5-5 16:18 | 只看该作者
但是多了解一点总是好的呀。。。

使用特权

评论回复
10
chuxh| | 2021-5-5 16:20 | 只看该作者
char a;
int16 b;
a=b >>8 ;
a=b >>8 & 0xff;
不需要,增加这点不算啥!何必这么精打细算呢???

使用特权

评论回复
11
juventus9554| | 2021-5-5 16:26 | 只看该作者
CCS编译器不会调整代码的。

使用特权

评论回复
12
stly| | 2021-5-5 16:28 | 只看该作者
可以在CCS上设置优化程度比较高的。

使用特权

评论回复
13
diweo| | 2021-5-5 16:29 | 只看该作者
自己对照汇编代码看一下不就知道了?

使用特权

评论回复
14
kangzj|  楼主 | 2021-5-5 16:30 | 只看该作者
嗯,预料中的结果,多谢大家啦

使用特权

评论回复
15
zchong| | 2021-5-5 17:11 | 只看该作者
看汇编,深入研究一下

使用特权

评论回复
16
八层楼| | 2021-6-1 09:26 | 只看该作者
需要精简到什么程度呢

使用特权

评论回复
17
磨砂| | 2021-6-1 09:27 | 只看该作者
汇编如何进行精简呢

使用特权

评论回复
18
晓伍| | 2021-6-1 09:29 | 只看该作者
移位取模比较快

使用特权

评论回复
19
观海| | 2021-6-1 09:31 | 只看该作者
多了解一下总是好的

使用特权

评论回复
20
guanjiaer| | 2021-6-1 09:33 | 只看该作者
编译器不会更改你的代码的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

672

主题

7007

帖子

2

粉丝