Space optimizing : C++, mega8, math.h

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View


Hi again,

I'm having problems getting room for the code in my ATmega8. I found that
working with 32 bit int's wasn't enough, but now I changed et all to 64 bit
int's the code grew about 50% from about 80% of the mega8's space to about
120% :(
I found that most of the space is lost in the following code where I use
fabs and sqrt. If I remove thoes lines the code is fills about 99%...

Anybody knows how to optimize the code to use less space, of a feature in
AVR studio (GCC) to optimize.
Speed is NOT important, space is.

"C:\WinAVR\bin\..\lib\gcc\avr.4.6\..\..\..\..\avr\bin\ld.exe: region text
is full (cnc.elf section .text)" :(

Thanks
 - Henning

void moveto(uint64_t nyx,uint64_t nyy,uint64_t nyz)
{
 long int dx;
 long int dy;
 long int dz;

 double Rho;
 double enX;
 double enY;
 double enZ;

 double x;
 double y;
 double z;

 dx = nyx - globalx;
 dy = nyy - globaly;
 dz = nyz - globalz;

 Rho = sqrt((double)(dx * dx) + (double)(dy * dy) + (double)(dz * dz));

 enX = (double)dx / Rho;
 enY = (double)dy / Rho;
 enZ = (double)dz / Rho;

 x=0;
 y=0;
 z=0;

 int R = 0;

 for (R=0;R<=Rho;R++)
 {
  x += enX;
  y += enY;
  z += enZ;

  if (fabs(x) >= 1)
  {
   if (x<0)
   {
    x++;
    globalx --;
    MStep(Motorx,negative);
   }
   else
   {
    x--;
    globalx ++;
    MStep(Motorx,positive);
   }
  }
  if (fabs(y) >= 1)
  {
   if (y<0)
   {
    y++;
    globaly --;
    MStep(Motory,negative);
   }
   else
   {
    y--;
    globaly ++;
    MStep(Motory,positive);
   }
  }
  if (fabs(z) >= 1)
  {
   if (z<0)
   {
    z++;
    globalz --;
    MStep(Motorz,negative);
   }
   else
   {
    z--;
    globalz ++;
    MStep(Motorz,positive);
   }
  }
 }
}



Re: Space optimizing : C++, mega8, math.h


Hi again,

I found that if I remove the line
    for (R=0;R<=Rho;R++)
The size drops to about 34%??
But if I change the "for" to an infinate loop using goto, the size again
becomes over 100% ??
So it looks like the sqrt and fabs funktions aren't the problem after all..!
It isn't that big a funktion and it's not that complex, so what is
happening?

I'm at loss here!!! I cant see what the compiler is doing that takes up so
much space.

Hope someone out there has a good idear..

 - Henning

Quoted text here. Click to load it



Site Timeline