请问 gnuarm 的编译效率很低吗?

[复制链接]
2831|5
 楼主| athlon64fx 发表于 2007-12-11 21:59 | 显示全部楼层 |阅读模式
谁能给出一个复杂一点的代码并且在其他编译器上试一下?<br /><br />//&nbsp;a.c<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;for(volatile&nbsp;int&nbsp;i=0xff;&nbsp;i;&nbsp;i--);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />命令:<br /><br />arm-elf-gcc&nbsp;-std=gnu99&nbsp;-g&nbsp;-c&nbsp;-o&nbsp;a.o&nbsp;a.c<br />arm-elf-objdump&nbsp;-S&nbsp;a.o&nbsp;&gta.lst<br /><br />a.lst&nbsp;的内容:<br /><br />a.o:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;format&nbsp;elf32-littlearm<br /><br />Disassembly&nbsp;of&nbsp;section&nbsp;.text:<br /><br />00000000&nbsp;&ltmain&gt:<br /><br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;0:&nbsp;&nbsp;&nbsp;&nbsp;e1a0c00d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;ip,&nbsp;sp<br />&nbsp;&nbsp;&nbsp;4:&nbsp;&nbsp;&nbsp;&nbsp;e92dd800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmdb&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{fp,&nbsp;ip,&nbsp;lr,&nbsp;pc}<br />&nbsp;&nbsp;&nbsp;8:&nbsp;&nbsp;&nbsp;&nbsp;e24cb004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;fp,&nbsp;ip,&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x4<br />&nbsp;&nbsp;&nbsp;c:&nbsp;&nbsp;&nbsp;&nbsp;e24dd004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x4<br />&nbsp;&nbsp;&nbsp;&nbsp;for(volatile&nbsp;int&nbsp;i=0xff;&nbsp;i;&nbsp;i--)<br />&nbsp;&nbsp;10:&nbsp;&nbsp;&nbsp;&nbsp;e3a030ff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;#255&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0xff<br />&nbsp;&nbsp;14:&nbsp;&nbsp;&nbsp;&nbsp;e50b3010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[fp,&nbsp;#-16]<br />&nbsp;&nbsp;18:&nbsp;&nbsp;&nbsp;&nbsp;ea000002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;28&nbsp;&ltmain+0x28&gt<br />&nbsp;&nbsp;1c:&nbsp;&nbsp;&nbsp;&nbsp;e51b3010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[fp,&nbsp;#-16]<br />&nbsp;&nbsp;20:&nbsp;&nbsp;&nbsp;&nbsp;e2433001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;r3,&nbsp;#1&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x1<br />&nbsp;&nbsp;24:&nbsp;&nbsp;&nbsp;&nbsp;e50b3010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[fp,&nbsp;#-16]<br />&nbsp;&nbsp;28:&nbsp;&nbsp;&nbsp;&nbsp;e51b3010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[fp,&nbsp;#-16]<br />&nbsp;&nbsp;2c:&nbsp;&nbsp;&nbsp;&nbsp;e3530000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;#0&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x0<br />&nbsp;&nbsp;30:&nbsp;&nbsp;&nbsp;&nbsp;1afffff9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;1c&nbsp;&ltmain+0x1c&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;34:&nbsp;&nbsp;&nbsp;&nbsp;e3a03000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;#0&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x0<br />}<br />&nbsp;&nbsp;38:&nbsp;&nbsp;&nbsp;&nbsp;e1a00003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;r3<br />&nbsp;&nbsp;3c:&nbsp;&nbsp;&nbsp;&nbsp;e89da808&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldmia&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;{r3,&nbsp;fp,&nbsp;sp,&nbsp;pc}<br />
mohanwei 发表于 2007-12-11 22:16 | 显示全部楼层

没用过,不过用很容易可以想到是跟优化级别有关的吧

  
 楼主| athlon64fx 发表于 2007-12-11 22:25 | 显示全部楼层

谢谢楼上

我想比较一下,如果跟IAR和RV&nbsp;MDK差很多就不打算用了.<br /><br />arm-elf-gcc&nbsp;-std=gnu99&nbsp;-g&nbsp;-Os&nbsp;-c&nbsp;-o&nbsp;a.o&nbsp;a.c<br /><br />a.o:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;format&nbsp;elf32-littlearm<br /><br />Disassembly&nbsp;of&nbsp;section&nbsp;.text:<br /><br />00000000&nbsp;&ltmain&gt:<br /><br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;0:&nbsp;&nbsp;&nbsp;&nbsp;e24dd004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x4<br />&nbsp;&nbsp;&nbsp;&nbsp;for(volatile&nbsp;int&nbsp;i=0xff;&nbsp;i;&nbsp;i--)<br />&nbsp;&nbsp;&nbsp;4:&nbsp;&nbsp;&nbsp;&nbsp;e3a030ff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;#255&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0xff<br />&nbsp;&nbsp;&nbsp;8:&nbsp;&nbsp;&nbsp;&nbsp;ea000001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;&ltmain+0x14&gt<br />&nbsp;&nbsp;&nbsp;c:&nbsp;&nbsp;&nbsp;&nbsp;e59d3000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[sp]<br />&nbsp;&nbsp;10:&nbsp;&nbsp;&nbsp;&nbsp;e2433001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;r3,&nbsp;#1&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x1<br />&nbsp;&nbsp;14:&nbsp;&nbsp;&nbsp;&nbsp;e58d3000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[sp]<br />&nbsp;&nbsp;18:&nbsp;&nbsp;&nbsp;&nbsp;e59d0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[sp]<br />&nbsp;&nbsp;1c:&nbsp;&nbsp;&nbsp;&nbsp;e3500000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;#0&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x0<br />&nbsp;&nbsp;20:&nbsp;&nbsp;&nbsp;&nbsp;1afffff9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;&ltmain+0xc&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />&nbsp;&nbsp;24:&nbsp;&nbsp;&nbsp;&nbsp;e28dd004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;0x4<br />&nbsp;&nbsp;28:&nbsp;&nbsp;&nbsp;&nbsp;e12fff1e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bx&nbsp;&nbsp;&nbsp;&nbsp;lr<br />
yatelanda 发表于 2007-12-12 09:13 | 显示全部楼层

在ARM的编译器排名中

在ARM的编译器排名:<br /><br />RealView的综合排名第一。<br />GreenHill的排名很靠前。<br />IAR居于中间位置。<br />GCC是较差一点的。<br /><br />每个编译器都有自己的特色,GCC也有自己的强项。必竟它不是纯粹的ARM编译器,不可能在各方面都优秀。<br /><br />keil&nbsp;MDK里面的realview编译器是低档次的,性能远赶不上RealView&nbsp;Developer&nbsp;Suite里面的编译器。
 楼主| athlon64fx 发表于 2007-12-12 11:55 | 显示全部楼层

谢谢ls.

  
wl80382000 发表于 2007-12-12 15:41 | 显示全部楼层

和优化等级有关

要用O2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以前用o0编译&nbsp;&nbsp;&nbsp;&nbsp;延时程序比ads的慢了接近一倍&nbsp;&nbsp;&nbsp;给我吓得&nbsp;&nbsp;&nbsp;&nbsp;一看反汇编简直惨不忍睹&nbsp;&nbsp;&nbsp;用o2就没问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

325

帖子

0

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