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 within amulti-by


From: Vincent Trouilliez
Subject: Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within amulti-byte integer ?
Date: Fri, 04 Nov 2005 13:10:32 +0100

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





reply via email to

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