From: Richard L. <ric...@ho...> - 2006-06-30 12:36:40
|
Hello All, I have an application which I am writiing for the PIC14 range of processors. I have written the application in SDCC C. I use the following line: sdcc -mpic14 -p16f628.c myproc.c The compiled .asm output seems to be quite bloated and the .hex file is about 1200 bytes in length. I have tried to optimize the code as much as possible, but I can only get this down to 820 bytes. The code is not that complicated <30loc and just seems to be a bit big for my application. If I write anymore code, I will blow the 1K limit on this! I have asked a friend to try and compile my application using CCS C compiler and the resultant code is only 175 bytes (optimized version). There seems to be a massive difference size of the generated outputs. I have tried the options --opt-code-size and --opt-code-speed, but this seems to make no difference. Is there any way I can optimize this to be even smaller? Is there an FAQ on the subject, in particular using the PIC range of chips. Many thanks in advance, Richard _________________________________________________________________ Windows Live Messenger has arrived. Click here to download it for free! http://imagine-msn.com/messenger/launch80/?locale=en-gb |
From: Xiaofan C. <xia...@gm...> - 2006-06-30 12:45:24
|
On 6/30/06, Richard Latter <ric...@ho...> wrote: > Hello All, > > I have an application which I am writiing for the > PIC14 range of processors. I have written the > application in SDCC C. I use the following line: > > sdcc -mpic14 -p16f628.c myproc.c > > The compiled .asm output seems to be quite bloated and > the .hex file is about 1200 bytes in length. > > I have tried to optimize the code as much as possible, > but I can only get this down to 820 bytes. > > The code is not that complicated <30loc and just seems > to be a bit big for my application. If I write anymore > code, I will blow the 1K limit on this! > > I have asked a friend to try and compile my application > using CCS C compiler and the resultant code is only 175 > bytes (optimized version). There seems to be a massive > difference size of the generated outputs. > > I have tried the options --opt-code-size and > --opt-code-speed, but this seems to make no difference. > > Is there any way I can optimize this to be even smaller? > > Is there an FAQ on the subject, in particular using the > PIC range of chips. > > Many thanks in advance, > > Richard > Maybe you want to post the code so that others can better help you. |
From: daniel r. <dan...@in...> - 2006-06-30 13:14:49
|
Hi Richard, I agree very much with your findings. You may also try CC5X and get even=20 more compact code. However to be fair it has to be mentioned that CCS=20 and CC5X do not have the ambition of SDCC regarding a more sophisticated=20 grammar allowing more powerful structures etc. I think that everything=20 comes with a cost! If your priority is "code size at any price", then switch to these other=20 compilers. If you'd prefer to benefit from "near-ANSI" C grammar, then=20 use SDCC, given that modern PICs anyway provide more programming space. Regards to all, Daniel Richard Latter wrote: > Hello All, > > I have an application which I am writiing for the > PIC14 range of processors. I have written the > application in SDCC C. I use the following line: > > sdcc -mpic14 -p16f628.c myproc.c > > The compiled .asm output seems to be quite bloated and > the .hex file is about 1200 bytes in length. > > I have tried to optimize the code as much as possible, > but I can only get this down to 820 bytes. > > The code is not that complicated <30loc and just seems > to be a bit big for my application. If I write anymore > code, I will blow the 1K limit on this! > > I have asked a friend to try and compile my application > using CCS C compiler and the resultant code is only 175 > bytes (optimized version). There seems to be a massive > difference size of the generated outputs. > > I have tried the options --opt-code-size and > --opt-code-speed, but this seems to make no difference. > > Is there any way I can optimize this to be even smaller? > > Is there an FAQ on the subject, in particular using the > PIC range of chips. > > Many thanks in advance, > > Richard > > _________________________________________________________________ > Windows Live=99 Messenger has arrived. Click here to download it for=20 > free! http://imagine-msn.com/messenger/launch80/?locale=3Den-gb > > >------------------------------------------------------------------------ > >Using Tomcat but need to do more? Need to support web services, security= ? >Get stuff done quickly with pre-integrated technology to make your job e= asier >Download IBM WebSphere Application Server v.1.0.1 based on Apache Geroni= mo >http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&dat=3D= 121642 > =20 > >------------------------------------------------------------------------ > >_______________________________________________ >Sdcc-user mailing list >Sdc...@li... >https://lists.sourceforge.net/lists/listinfo/sdcc-user > =20 > |
From: George M. G. Jr. <gga...@co...> - 2006-06-30 13:36:50
|
For a 175 byte program, have the CCS generate assembler and use that as you base. George On Fri, 2006-06-30 at 12:36 +0000, Richard Latter wrote: > Hello All, > > I have an application which I am writiing for the > PIC14 range of processors. I have written the > application in SDCC C. I use the following line: > > sdcc -mpic14 -p16f628.c myproc.c > > The compiled .asm output seems to be quite bloated and > the .hex file is about 1200 bytes in length. > > I have tried to optimize the code as much as possible, > but I can only get this down to 820 bytes. > > The code is not that complicated <30loc and just seems > to be a bit big for my application. If I write anymore > code, I will blow the 1K limit on this! > > I have asked a friend to try and compile my application > using CCS C compiler and the resultant code is only 175 > bytes (optimized version). There seems to be a massive > difference size of the generated outputs. > > I have tried the options --opt-code-size and > --opt-code-speed, but this seems to make no difference. > > Is there any way I can optimize this to be even smaller? > > Is there an FAQ on the subject, in particular using the > PIC range of chips. > > Many thanks in advance, > > Richard > > _________________________________________________________________ > Windows Live Messenger has arrived. Click here to download it for free! > http://imagine-msn.com/messenger/launch80/?locale=en-gb > > > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Sdcc-user mailing list > Sdc...@li... > https://lists.sourceforge.net/lists/listinfo/sdcc-user |
From: Raphael N. <rn...@we...> - 2006-06-30 13:36:55
|
Hi Richard, > I have an application which I am writiing for the > PIC14 range of processors. I have written the > application in SDCC C. I use the following line: > > sdcc -mpic14 -p16f628.c myproc.c > > The compiled .asm output seems to be quite bloated and > the .hex file is about 1200 bytes in length. > > I have tried to optimize the code as much as possible, > but I can only get this down to 820 bytes. > > The code is not that complicated <30loc and just seems > to be a bit big for my application. If I write anymore > code, I will blow the 1K limit on this! > > I have asked a friend to try and compile my application > using CCS C compiler and the resultant code is only 175 > bytes (optimized version). There seems to be a massive > difference size of the generated outputs. > > I have tried the options --opt-code-size and > --opt-code-speed, but this seems to make no difference. These options are not used in the pic14/16 backends; maybe the frontend uses them during optimizations, but I doubt it. > Is there any way I can optimize this to be even smaller? Well... yes: Come up with a good set of peehole optimizer rules to improve code quality (rather limited approach) or implement (data-flow-based) optimizations on the pCode level as I did for the PIC16 some months ago. Implementation of similar optimizations for pic14 are on my agenda, but apart from fixing the most critical bugs I do not find much time to spend on sdcc. So if you wondered if there were magic command line options to enable more optimizations, the answer is (unfortunately) "not yet", sorry. They are, however, a planned feature ;-) > Is there an FAQ on the subject, in particular using the > PIC range of chips. Due to lacking optimizations, no (i.e. none that I know of). Regards, Raphael Neider |
From: Mark R. <mar...@gm...> - 2006-06-30 16:36:41
|
On 6/30/06, Richard Latter <ric...@ho...> wrote: > Hello All, > > I have an application which I am writiing for the > PIC14 range of processors. I have written the > application in SDCC C. I use the following line: > > sdcc -mpic14 -p16f628.c myproc.c > > The compiled .asm output seems to be quite bloated and > the .hex file is about 1200 bytes in length. > > I have tried to optimize the code as much as possible, > but I can only get this down to 820 bytes. > > The code is not that complicated <30loc and just seems > to be a bit big for my application. If I write anymore > code, I will blow the 1K limit on this! > > I have asked a friend to try and compile my application > using CCS C compiler and the resultant code is only 175 > bytes (optimized version). There seems to be a massive > difference size of the generated outputs. > > I have tried the options --opt-code-size and > --opt-code-speed, but this seems to make no difference. > > Is there any way I can optimize this to be even smaller? > Is it possible that a library function is accidentally linked in? Regards, Mark markrages@gmail -- You think that it is a secret, but it never has been one. - fortune cookie |