[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] Global variables and space efficient programming agai
Re: [avr-gcc-list] Global variables and space efficient programming again
28 Mar 2001 22:41:39 +0400
address@hidden (Robert Rozman) writes:
> a little while ago I posted message concerning usage of main variables
> in avr-gcc programs and code space efficient programming.
> I have a program that uses quite some global variables (30-40). I
> discovered that every access to this variable takes assembly
> instructions (sts, std if I remember right) that results in quite
> inefficient use of code space.
> Then I forced variables into struct and define global pointer to this
> struct and declare it as a r28,r29 register variable (this registers
> were obviously reserved from other usage). I saved a lot of code space
> (600 bytes in 8000 bytes) but it still seems that leaving this choice to
> compiler would be better than forcing him to stay away from those
> registers. If I do this, then avr-gcc is filling those registers at each
> access, so all profit is lost .
Send me examples.
> Denis replied that obviously optimizer in avr-gcc is in some way
It's a generic GCC problem. You can try `-fstrict-aliasing'
About your previous example:
try: avr-gcc -Os -fstrict-aliasing -S test.c
struct time_struct * const time;
/* --------^^^^^^^------------- This `const' important */
time->day = 5;
time->min = 10;