Still wondering about the feasability of marking all non-static functions as banked. Any suggestions how I could go about this? Is it something I could easily add into sdcc?
On Tue, Dec 22, 2009 at 9:51 AM, Anthony Asterisk < anthony.aster...@gmail.com> wrote: > Since the codebase is large and open any externally visible method could > be called from any bank. I think I would need a flag that forces these > functions to be treated as banked. I don't think there is a command line > flag like this. A pragma wouldn't work since it would require changing > numerous files that are nonspecific to the 8051 port. > > If sdcc can provide some way to make all functions banked (ie accessed via > trampoline) then my work become feasible. The overhead is unfortunate but > cannot be avoided. How difficult would it be to add a command line switch > to mark all methods as banked? > > > Maarten Brock wrote: > > Hi Anthony, > > Currently all C-library code is compiled without any bankswitching > directive which places the code in CSEG. The linker will put CSEG in the > common bank (0x0000-0x7FFF) so there is no banking problem. > > Instead of preprocessing your source code I think what you want is a > pragma or commandline switch to turn on and off banked functions. The > switch should be on for both the implementation and the prototype of your > functions. The switch probably needs to be off for the C-library. > > The downside is that all functions will become banked including the > overhead. Judicious use of the banked keyword on some toplevel tasks which > only use non-banked functions or functions in the same bank will greatly > reduce this overhead. > > Maarten > > > > Although I have bankswitching working as described in the sdcc manual, > I'm still stuck with a couple of issues. I'm wondering if anyone has > suggestions on how to work around these... > > * printf routine is linked into a non-home bank and is not marked as a > banked routine. Bad things happen when banked code calls printf. > Is there anyway to force printf into the first bank at linking time? > Would a banked wrapper function in the same bank as printf be a > reasonable work around? (the main limitation would be that all banked > code must be modified to call the wrapper instead of printf) > > * source code must be modified with __banked tag to move them into > non-default banks and keep them accessible. I'm working on porting an > open source operating system to an 8051 cpu. The OS already supports > numerous platforms. It will be difficult and undesirable to modify all > of the source code in a way that is only required for a single > platform. Sure it is possible to keep the code portable with > pre-processor macros, but the core developers will not be interested in > diluting their code base with non-standard, cpu/compiler specific flags. > > It would be really neat if the compiler could accept an additional > file that could specify on a per routine basis additional tags such as > banked, and the desired bank/area. hey i can dream right!? > > My only other recourse short of forking the OS code base is writing a > c re-compiler that can preprocess all the code and add in the required > tags. I have done something similar with http://codeworker.free.fr/ > before but this seems overkill. Is there some easier way? > > > Anthony* > > ------------------------------------------------------------------------------ > This SF.Net email is sponsored by the Verizon Developer Community > Take advantage of Verizon's best-in-class app development support > A streamlined, 14 day to market process makes app distribution fast and > easy > Join now and get one step closer to millions of Verizon > customershttp://p.sf.net/sfu/verizon-dev2dev > _______________________________________________ > Sdcc-user mailing > listsdcc-u...@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/sdcc-user > > > > ------------------------------------------------------------------------------ > This SF.Net email is sponsored by the Verizon Developer Community > Take advantage of Verizon's best-in-class app development support > A streamlined, 14 day to market process makes app distribution fast and easy > Join now and get one step closer to millions of Verizon > customershttp://p.sf.net/sfu/verizon-dev2dev > _______________________________________________ > Sdcc-user mailing > listsdcc-u...@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/sdcc-user > > >
------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user