avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [avr-gcc-list] How to (efficeiently !!!) test a bit withinamulti-byt


From: niklo
Subject: RE: [avr-gcc-list] How to (efficeiently !!!) test a bit withinamulti-byte integer ?
Date: Fri, 4 Nov 2005 13:23:26 +0100

Does your lcd-routines rely on busy-waiting? That might be the reason why
opt doesn't work. I don't know but "badly" written wait-loops might e opt'ed
away.

/niklo

-----Original Message-----
From: address@hidden
[mailto:address@hidden On Behalf Of
Vincent Trouilliez
Sent: den 4 november 2005 13:11
To: avr-gcc
Subject: Re: [avr-gcc-list] How to (efficeiently !!!) test a bit
withinamulti-byte integer ?

On Fri, 2005-11-04 at 10:04 +0100, Jurek Szczesiul wrote:
> Hi Vince !
> You could also try to retrieve directly the 2. ( from 0) byte of ulong and
check
> the bit , something like this ( -Os) :
> 
> if( *((uchar*)&long1+2) & 0x4) PORTB = 0x1;
>   8c: 80 91 65 00  lds r24, 0x0065
>   90: 82 ff        sbrs r24, 2
>   92: 02 c0        rjmp .+4       ; 0x98
>   94: 81 e0        ldi r24, 0x01 ; 1
>   96: 88 bb        out 0x18, r24 ; 24

Using pointers to access directly the required byte, I did think of it,
but didn't dare ! ;-) It's technically elegant I find, but sadly the
code is not very easy to read I find. 

About the -Os flag, I noticed this morning that it managed MASSIVE code
size reduction ! SO far I had been using just -O (I guess that means no
particular optimisation ?), and the program is about 13KB in size. With
-Os, it's only 10KB !!!  Sadly, for some reason, when compiled with this
flag, my program misbehaves badly (I get massive corruption of the LCD
display) !! Too bad... :o(



--
Vince



_______________________________________________
AVR-GCC-list mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list





reply via email to

[Prev in Thread] Current Thread [Next in Thread]