Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
Space optimizing : C++, mega8, math.h
- 05-21-2007
- Henning Mortensen
May 21, 2007, 7:24 pm

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

Site Timeline
- » Banking Pic 16F877
- — Next thread in » Microcontroller Discussions
-
- » parallax
- — Previous thread in » Microcontroller Discussions
-
- » New(ish) assembler for PIC16 microcontrollers (asm1825)
- — Newest thread in » Microcontroller Discussions
-
- » (PDF) Essentials of Anatomy & Physiology 2nd Ed by Kenneth Saladin
- — The site's Newest Thread. Posted in » Electronics (Polish)
-
- » Cortex-Mx MCUs with SWD access locked
- — The site's Last Updated Thread. Posted in » Embedded Programming
-