From: Wojciech Z. <wz...@is...> - 2001-02-09 23:16:00
|
Hi all SDCC Users & Developers, I don't know if I'm the only one who may not successfully compile the project with SDCC because of its DSEG overlaying limitations? The problem is that SDCC does not overlay the local variables (and internally used variables) in functions which call another functions. This results in DSEG overflows, when writing programs requiring more than one level of function calls. Unfortunately some really simple operations (like 16 bit * 16 bit multiplications) are implemented as function calls (not as macros), so it is very easy to run into that problem (it is really difficult to move all the 16bit and float operations into the main ;-) ). I would like to know if I'm really the only one interested in improving that? Is it possible to implement the "multilevel" overlaying in SDCC? I've experimented with asx8051 and aslink, and it seems to me that it is possible to define the multiple overlay areas, necessary to implement such a feature... My current knowledge of SDCC internals is not sufficient to recognize how difficult would it be to add the "call tree" analysis to the SDCC. Could someone please help me to find the answer? All I've found in the current sources is the static bool canOverlayLocals (eBBlock **ebbs, int count) function which just checks if the function calls another functions... Certainly this approach should be changed and replaced by assignment an "overlay level" to each function, depending on what functions does it call, and where is it called from... Maybe it is imposible at all without really serious changes in the whole SDCC? -- TIA & Greetings Wojciech Zabolotny wz...@is... |