MSP430下C语言代码中常量计算导致代码体积变化的问题

[复制链接]
1890|8
 楼主| gyj163nt 发表于 2015-1-21 16:37 | 显示全部楼层 |阅读模式
你好,我调试程序时发现如下两行代码生成的文件大小有2K左右的区别, MSP430编译器不会先把常量计算编译时先计算好,在链接时字节使用吗?  记的以前用keil C51时如下2行是没有问题的。

     //注意:下面2行代码导致的代码体积变化明显
      //ucRow = (unsigned char)(sin(usI*3.14159*4/127)*20+32);   
      ucRow = (unsigned char)(sin(usI*0.0989478)*20+32);   

多谢大家了。我用的MSP430G2553,16K空间有点紧张了。

另外发现使用三角函数也会使代码体积剧增(10K左右),大家一般是如何处理的呢?
dirtwillfly 发表于 2015-1-21 22:14 | 显示全部楼层
不清楚你用的那个型号的msp430。
msp430和51单片机一样,要尽量避免直接进行大量的浮点数计算的。
有些msp430带硬件乘法器,如果有硬件乘法器的话尽量使用硬件乘法器进行浮点数计算吧。尽量使用对msp430优化过的数学库(ti官网有库文件)。
另外,如果对这两个行代码的计算时间没有太大限制的话,可以尝试调整编译时的优化选项。

Unshining 发表于 2015-1-21 22:29 | 显示全部楼层
LZ如果打开优化呢?
myqq12 发表于 2015-1-22 11:18 | 显示全部楼层
dirtwillfly 发表于 2015-1-21 22:14
不清楚你用的那个型号的msp430。
msp430和51单片机一样,要尽量避免直接进行大量的浮点数计算的。
有些msp4 ...

表情里面没有大拇指,哈哈,确实,我一般都是用最高优化,然后选择平衡,不过副作用就是有时候调试的时候有的地方断点进不去,
mmbs 发表于 2015-1-22 23:46 | 显示全部楼层
这个还真的没有注意过呢。
as564335sa 发表于 2015-1-23 10:30 | 显示全部楼层
myqq12 发表于 2015-1-22 11:18
表情里面没有大拇指,哈哈,确实,我一般都是用最高优化,然后选择平衡,不过副作用就是有时候调试的时候 ...

断点进不去是被优化掉了吧
myqq12 发表于 2015-1-23 16:21 | 显示全部楼层
as564335sa 发表于 2015-1-23 10:30
断点进不去是被优化掉了吧

是的
angerbird 发表于 2015-1-25 20:59 | 显示全部楼层
这个很明显就是跟算法相关系的啊
angerbird 发表于 2015-1-25 21:00 | 显示全部楼层
可以将那个算法拆开,一步一步的往下计算的,这样其运行起来生产的文件大小肯定是远远小于2K的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部