Maker Pro
Maker Pro

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

H

Henning Mortensen

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\3.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);
}
}
}
}
 
H

Henning Mortensen

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
 
Top