这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » GCC,ICC,BUG 今天开始看和学GCC,实在收不了ICC的BUG了。。

共4条 1/1 1 跳转至

GCC,ICC,BUG 今天开始看和学GCC,实在收不了ICC的BUG了。。

院士
2006-09-17 18:14:16     打赏
GCC,ICC,BUG 今天开始看和学GCC,实在收不了ICC的BUG了。。



关键词: 今天     开始     实在     不了    

院士
2006-12-22 22:43:00     打赏
2楼
1: 是了,GCCAVR有没有语法介绍的资料,感觉有点和标准C不同啊 2: 这两天我也在把以前写的代码移到CVAVR上.一个字:爽!

编译效率确实高了,而且自带的库函数非常好用!

ICC 真是...虽然好入门,但是BUG之多,忍无可忍... 3: GCC的文档在C:/WinAVR/doc/gnu/gcc下面。
其中的C-Extensions.html给出了GCC扩充的功能。

当然,最基本的是,GCC是ANSI兼容的。

AVR处理器而言,硬件的特殊之处要看C:\WinAVR\doc\AVR-libc下面的文档。 4: 学用gcc在线汇编感觉有点怪怪的…… 5: 我强烈推荐你使用cvAVR 6: GCC, 绝对的趋势,每半年必有更新。 7: 是不是哦~~~ 8: 到http://sourceforge.net/projects/winAVR看看吧。如果你实在等不及,自己编译一个GCC出来吧:
http://www.gnu.org/software/gcc/gcc.html 9: 试着写了个I2c的gcc,只进行主控读写编译了一下,2,5K多!!!,虽然比以前汇编写的更完善了点,但也大多了,我用的M8才8K……,我想可能是刚学用c写程序,很多地方还不明白,以至于多了不少没用的代码。听说写c程序有不少窍门,可以提高代码的效率,比如用#ifdef之类的替换if,还有头文件的引入等,各位C高手们能不能提示一下啊!
多谢 先了! 10: Anitya:代码效率不能这样比在同一种芯片上,完成相同的任务,试着自己写一段汇编,再写一段等价的C程序,用不同的编译器编译后看一下产生的lst文件,看看编译器输出的结果和你手工写出的汇编码有多大区别?我想GCC的输出结果应该会让你满意的。
GCC编译输出的机器码中含初始化和退出代码,单纯看字节数是不公正的。 11: 多谢mxh0506的指点我去看了一下c生成的.lss和.lst文件两个文件,但是.lst看不大懂,对我来说可以说是乱七八糟的一堆东西,好不容易找了个汇编命令,可是看过去格式又好象不对,一些奇怪的变量名、符号,汇编中没这样用的。.lss文件还不错,看得比较明白,但发现了个问题:我手头上有一本介绍gcc的书,上面说gcc函数调用规则是函数的参数由左到右分配给R25-R8,但看到.lss中,有的函数有按照这样的规则,不过更多的好象是从R24开始,比如我的一个函数:
int TW_Read_Byte(uint8_t addr,uint8_t len,uint8_t *buf)
调用时
uint8_t count=TW_Read_Byte(0x00,0x20,buf);
编译成
388:    ae 01           movw    r20, r28
38a:    4f 5f           subi    r20, 0xFF    ; 255
38c:    5f 4f           sbci    r21, 0xFF    ; 255
38e:    60 e2           ldi    r22, 0x20    ; 32
390:    80 e0           ldi    r24, 0x00    ; 0
而且R23好象也漏了~~,是我理解错误?还是程序会自动选择? 12: C语言在进行函数调用/返回以及表达式计算时所有短于int类型宽度的数据类型首先会转化为int,因此空了r23。

关于这条规则,请看我刚贴的《C语言表达式中的int规则》。
13: 去看看先

高工
2022-08-20 15:15:08     打赏
3楼

感谢分享


专家
2022-08-20 15:18:26     打赏
4楼
感谢分享

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]