[AVR单片机] 变态的AVR-GCC优化!!!

[复制链接]
6373|23
 楼主| 457878 发表于 2010-3-8 08:52 | 显示全部楼层 |阅读模式
下面这段代码不优化才正常,优化就跑飞!!!谁能分析下为什么?
===============================================
#include <avr/io.h>  

unsigned char ret;
unsigned char Test(unsigned char tmp)  
{  
        if(tmp == 1)  
        {  
                return (1);  
        }  
        else if (tmp == 2)  
        {  
                return (2);  
        }  
        else if (tmp == 3)  
        {  
                return (3);  
        }  
        return (4);  
}
int main()  
{  
        while(1)  
        {  
                ret = Test(1);
                PORTB = ret;
        }         
}
linhai2009 发表于 2010-3-8 13:36 | 显示全部楼层
这么简单的程序就不需要优化了把
suoma 发表于 2010-3-8 20:59 | 显示全部楼层
怎么优化的?
lovelyegle 发表于 2010-3-8 21:18 | 显示全部楼层
这么短还能优化成什么样?
linhai1986 发表于 2010-3-8 21:22 | 显示全部楼层
这个应该不许要优化了吧
juventus9554 发表于 2010-3-8 22:34 | 显示全部楼层
这还优化……
vr2whf 发表于 2010-3-9 00:02 | 显示全部楼层
优化成这样子吧

#include <avr/io.h>  

unsigned char ret;
int main()  
{  
        while(1)  
        {  
                ret = 1;
                PORTB = ret;
        }         
}
linjing 发表于 2010-3-9 09:17 | 显示全部楼层
volatile unsigned char ret;

试试看?!
lianda_ 发表于 2010-3-10 12:05 | 显示全部楼层
这是全部程序吗?
麻辣鸭脖子 发表于 2010-3-10 23:22 | 显示全部楼层
ret = Test(1); tmp一直是1啊。
else if (tmp == 2)  
        {  
                return (2);  
        }  
        else if (tmp == 3)  
        {  
                return (3);  
        }  
        return (4);  
这些不就没用了吗?
laslison 发表于 2010-3-13 10:57 | 显示全部楼层
那就是7楼的优化方式了,有冗余的程序
麻辣鸭脖子 发表于 2010-3-13 22:45 | 显示全部楼层
Karlshen 发表于 2010-3-13 23:04 | 显示全部楼层
楼主发了贴就跑了啊
易达口香糖 发表于 2010-3-14 00:23 | 显示全部楼层
急寻楼主,解决方法是啥
HonMe 发表于 2010-3-14 16:20 | 显示全部楼层
不知道为什么,我也出了这样的问题
voidx 发表于 2010-3-15 12:42 | 显示全部楼层
直接优化成:
while(1)
{
   PORTB = 1;
}

GCC优化在这里没有任何问题。
huamunv 发表于 2010-3-15 21:20 | 显示全部楼层
直接优化成:
while(1)
{
   PORTB = 1;
}

GCC优化在这里没有任何问题。
voidx 发表于 2010-3-15 12:42


这样优化也看不出哪里不对了
午夜粪车 发表于 2010-3-15 21:21 | 显示全部楼层
这样优化也看不出哪里不对了
huamunv 发表于 2010-3-15 21:20
;P
hsb.siq 发表于 2010-3-16 00:54 | 显示全部楼层
顶一下,那位高手能说说这个优化,
我也碰到这个问题,第一次用AVR M169,因为刚开始试的时候,一优化把程序里面的延时刷掉了,现在16K程序区快用完了,哪位高手能说说优化对程序有没影响。
 楼主| 457878 发表于 2010-3-16 08:51 | 显示全部楼层
值得说一下的是,我在工作中用到的代码都运行正常......
可见,编译器能分辨你是在工作还是在儿戏......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

270

主题

885

帖子

3

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