We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello! I am using a 80C537 which has 256 bytes of IDATA memory. Now, if the software "tries" to allocate more than 256 bytes of IDATA through nested function calls, the program hangs up... which is understandable. But is there a way to get a warning or any kind of information about these situations? I guess it's almost impossible for C51 to determine how functions are called in every situation. What's a good way to prevent this, besides putting everything in XDATA and forget about IDATA? Thank you! Holger
I guess it's almost impossible for C51 to determine how functions are called in every situation. It's actually the Linker which does this; and it makes a pretty good job - search the knowledgebase for articles on Overlaying. The big problem is with functions called via interrupts and pointers (function pointers is covered in a couple of articles/app notes). There are linker controls to "manually" tell the linker about these situations - see the manual & those articles.