|
有没有使用IAR for SAM8的朋友呢,我怎么感觉它的效率好低啊
下面的程序,都是开了最高级别优化的
__no_init unsigned char temp;
int main( vod )
{
temp |= 0x01;
}
单是 temp |= 0x01; 这一句,竟然就用了10字节,会不会是因为定义的变量太少了呢???
生成的汇编是:
// 75 temp |= 1;
LD R15,#LOW(temp)
LD R14,#1
LD R13,@R15
AND 0xDF,#252
OR R13,R14
LD @R15,R13
在生成的汇编中,只在一处找到#LOW,就是上面那里,其它地方没有找到,不知道这个#LOW是怎么来的
__no_init unsigned char temp@0xb0;
int main( void )
{
temp |= 0x01;
}
这样子写的效率明显比上面的高很多,但带来的一个问题是,在编译结果中,RAM的使用数量不对,
也就是没有算到使用的RAM里面去,堆栈占去32个字节,编译结果中,RAM的使用量仍是32字节。
下面是生成的汇编:
// 75 temp |= 1;
OR 0xB0,#1
AND 0xDF,#252
//-----------------------------------------------------------------------------------------------------------------------------------
很喜欢IAR支持匿名结构体的功能,但是,上面那样的效率实在是不怎么能接受,我觉得原因应该是:
1、我自己对IAR for SAM8还不够了解,还不知道怎么用,或是有哪些设置
2、程序太短了
小弟最近要用到s3c9454,不怎么想用汇编,还请有使用过的朋友指点下IAR for SAM8有什么技巧?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|