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 have a project (C166/HUGE memory model), where some local variables seems to lose their values. Everything worked fine, until I added some more code to a specific function (and one more local variable):
unsigned char Ptmp=0,FSzu=0,IsCancelled=1,errors=0, FSDin,f3=0,f4=0,Abort=0,ii,done=0;
NAME CLASS SPACE TYPE OFFSET SIZE ---------------------------------------------------- Ptmp . . . . --reg-- uchar ----- 1 FSzu . . . . auto uchar 2H 1 IsCancelled. auto uchar 0H 1 errors . . . auto uchar 6H 1 FSDin. . . . auto uchar 8H 1 f3 . . . . . auto uchar AH 1 f4 . . . . . auto uchar CH 1 Abort. . . . auto uchar EH 1 ii . . . . . --reg-- uchar ----- 1 done . . . . auto uchar 2H 1
NAME CLASS SPACE TYPE OFFSET SIZE ---------------------------------------------------- Ptmp . . . . auto uchar 0H 1 FSzu . . . . auto uchar 2H 1 IsCancelled. --reg-- uchar ----- 1 errors . . . auto uchar 6H 1 FSDin. . . . auto uchar 8H 1 f3 . . . . . auto uchar AH 1 f4 . . . . . auto uchar CH 1 Abort. . . . auto uchar EH 1 ii . . . . . --reg-- uchar ----- 1
"what would be a reason against making "everything static" with the compiler option?" That'd mean you'd need to allocate RAM for every single local variable. "Conventional" 'C' compilers allocate local variables on the Stack, so you only need enough RAM for the maximum number of local variables in use simultaneously C51 uses a data overlaying technique to achieve a similar end. I dunno how C166 does it.