打印
[开发工具]

IAR的编译器比MDK的差这么多?!

[复制链接]
12065|38
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcujob|  楼主 | 2008-3-31 18:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们搞变频的,打算用ST的芯片,买了块STM32评估板,开始挑开发工具,直接从IAR例程中挑了一个,先在IAR下编译,最大优化级别情况下,BIN文件有6.9K,原封不懂移到MDK下编译,BIN文件有7.2K,后来发现MDK还有一个选项,选了之后,BIN文件只有3.7K了!IAR再也找不到其他选项了,难道IAR的编译器比MDK差这么多?几乎有一半,那岂不是用IAR开发的100K的程序我在MDK下用64K的芯片就能搞定?!
沙发
paoa| | 2008-3-31 18:18 | 只看该作者

据我了解。。。

传说IAR的编译器比MDK的优越,因为IAR搞编译器出身,搞了很多8位的编译器

使用特权

评论回复
板凳
香水城| | 2008-3-31 18:26 | 只看该作者

有差别是正常的,但差别这么大是不正常的

你是否能具体看看是哪里出了差错,如果有更多经验的话,可以看看生成的代码,找找原因。

使用特权

评论回复
地板
香水城| | 2008-3-31 18:31 | 只看该作者

关于编译器优化的效率有时在小程序上是看不出来的

使用特权

评论回复
5
woniu| | 2008-3-31 18:34 | 只看该作者

世道如此~~~

8位里面Keil是老大,MDK本身就是keil搞的,Keil开始自己搞了个armcc编译器,现在换成了arm公司自己的编译器,老大都认栽了,呵呵

使用特权

评论回复
6
luxinsun| | 2008-3-31 18:51 | 只看该作者

支持楼主继续研究,找出问题的真相。造福人类。

支持楼主继续研究,找出问题的真相。造福人类。

使用特权

评论回复
7
mohanwei| | 2008-3-31 18:54 | 只看该作者

需要大量统计才有意义……

使用特权

评论回复
8
王紫豪| | 2008-3-31 20:50 | 只看该作者

是不是 microLIB?哈哈

使用特权

评论回复
9
cnelf| | 2008-3-31 22:21 | 只看该作者

~

估计应该大概可能也许非常: 是。

使用特权

评论回复
10
远望谷| | 2008-4-1 08:47 | 只看该作者

第三方的东西一般斗不过原厂的

性能斗过了,市场也斗不过,微软以前还用Borland的编译器开发VC,后来Borland就消失了

使用特权

评论回复
11
linqy| | 2008-4-1 09:01 | 只看该作者

楼主用了什么选项, 我也在用MDK,好经验分享分享

使用特权

评论回复
12
wlq_9| | 2008-4-1 09:14 | 只看该作者

基本

上很多人都拿着几行代码来比较编译器的性能,可是比出来的结果可信吗?还有就是你根本就不了解一种平台.........就象是菜鸟总怀疑编译器有BUG一样....
8位机里面keil也只算是一家小公司,专业的开发工具提供商一般都有比较全面的产品线,基本上能提供市场上的绝大部分芯片的平台.IAR就是这些公司其中的一个.这些公司都经过市场的洗礼,产品也是经过了市场长期的验证,生存并状大就是其存在的最好证明.
反倒是ARM官方的开发环境,从SDT,ADS,RVDS,RVMDK,反而不一定能竞争过这些专业的嵌入式软件开发商.

使用特权

评论回复
13
mcujob|  楼主 | 2008-4-1 09:15 | 只看该作者

11楼

用的选项是“ One ELF Section per Function”,看意思好像是一个函数一个ELF节,不知道干什么用,请牛人赐教

使用特权

评论回复
14
linqy| | 2008-4-1 09:22 | 只看该作者

LZ

If the library was built without the "One ELF Section per Function" selected, you could include all the functions in a source file even though you only used one of them。
这是我在其他论坛上找的别人的解释

使用特权

评论回复
15
香水城| | 2008-4-1 09:31 | 只看该作者

14楼的解释给我一个启发

虽然我还不完全理解"One ELF Section per Function"的真实意义,但这给我以启发,LZ会不会在IAR下链接时包含了所有的函数,没有用到的函数也链接到了目标bin文件中;而在Keil环境下,链接时只包含了用到的函数,没用到的函数不含在目标bin文件中。

使用特权

评论回复
16
MicroMMU| | 2008-4-1 12:38 | 只看该作者

RO-data也应算进去,

Program Size: Code=3370 RO-data=670 RW-data=32 ZI-data=512  
RO-data也应算进去,

使用特权

评论回复
17
sword1013| | 2008-4-2 09:45 | 只看该作者

:)

One ELF Section per Function选项应该是按函数编译,没有被调用的函数通通干掉了. 大部分编译器都是优化函数,精简指令,没有分析调用关系,所以即使函数优化得再好,也还是有很多冗余代码。

使用特权

评论回复
18
jweiok| | 2008-4-2 11:01 | 只看该作者

学习中

顶1个 ,学习中!

使用特权

评论回复
19
haohuan| | 2008-4-2 11:09 | 只看该作者

大开眼界

学习中。。。。。。

使用特权

评论回复
20
woniu| | 2008-4-9 15:30 | 只看该作者

MDK的书什么时候出?

使用特权

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

本版积分规则

5

主题

20

帖子

0

粉丝