Back to Know-How on Development for F2MC-16LX Family
2. How to make the ROM efficient C source
2-1. Using the _direct declaration (C Analyzer enables to detect candidate for efficient _direct.)
To improve the ROM code efficiency of C source, it is possible to improve by defining static variables as _direct declaration
ones.
The _direct declaration variables are in 256Byte (min.). It is efficient way to define frequent used variables as _direct
declaration in order.
direct declaration sample:
_direct unsigned char port_new,port_old,port1_data;
_direct unsigned int time;
void main(void)
{
port_new=0;
port_old=10;
port1_data=0xff;
init_CPUstate();
while(1)
{
search_state();
port1_data--;
:
:
for(time=0;time<=1000;time++);
}
}
2-2. Using the in-line. (C Analyzer enables to detect candidate for in-line expansion.)
When defining the function of the small code size with argument as static function and implementing in-line expansion, which
allow to reduce the code size.
To implement in-line expansion of static declaration function, the -xauto option need specifying before compiling the source
program.
Example of in-line expansion:
static Proc7 (IntParI1, IntParI2, IntParOut)
OneToFifty IntParI1;
OneToFifty IntParI2;
OneToFifty *IntParOut;
{
REG OneToFifty IntLoc;
IntLoc = IntParI1 + 2;
*IntParOut = IntParI2 + IntLoc;
}
2-3. Using the built-in function
When performing a multiplication and a division by C language, the code size is too big bye using the libraries of div/mul/mod.
Therefore F2
MC-16LX family allow to use these built-in functions of _mul( )/_div( )/_mod( ). These functions enables to reduce the code
size.
Example of built-in function:
unsigned int a,b;
unsigned long c;
void sample(void)
{
// c=a*b; /*
normal description of C language */
c=_mul(a,b); /* description of using built-in function
*/
}
