All,

I am witting some code for an 8051 and seeing that is looks to be 
missing an optimisation anyway I have distilled th ecode to this fragment:

void display_update( unsigned char tens, unsigned char ones );


void my_func( unsigned char my_value )
{
    unsigned char d1;
    unsigned char d2;


    d1 = my_value % 10;
    d2 = my_value / 10;

    /* Do stuff with d1 & d1 */
    display_update( d2, d1  );
}

The list file shows me this:
                            110 ;       test51.c:10: d1 = my_value % 10;
   0002 75 F0 0A            111         mov     b,#0x0A
   0005 EA                  112         mov     a,r2
   0006 84                  113         div     ab
   0007 85 F0*00            114         mov     _display_update_PARM_2,b
                            115 ;       test51.c:11: d2 = my_value / 10;
   000A 75 F0 0A            116         mov     b,#0x0A
   000D EA                  117         mov     a,r2
   000E 84                  118         div     ab
   000F F5 82               119         mov     dpl,a
                            120 ;       test51.c:14: display_update( d2, d1  );
  
I have tried swapping the modulo and div operation around but it doe snot seem 
to have any effect.
So my question is am I missing a command line switch when I compile the file?  
I use the following to compile this file:
sdcc -c    -mmcs51 --model-small test51.c

Regards,
Rod Boyce



------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to