From: Fons W. <fon...@ho...> - 2004-03-15 06:46:03
|
Dear all, It seems that the sdcc compiler is very thrifty in the sense that when it is not needed it does not allocate memory and sometimes it assigns address for a variable but does not substitute the value to it. For example in the code: sfr at 0xA0 P2 ; void main() { char xdata yTemp ; yTemp = 10 ; P2 = yTemp ; } In this example it assigns the address 0x0000 at the XRAM to yTemp but does not substitute the 10 to it, instead it substitutes 10 directly to P2. It is efficient but sometimes it disturbs. I am using a debugger that uses the output of the sdcc compiler. Trying to watch the variable yTemp I get the garbage stored in address 0x0000 in XRAM. If the variable yTemp is declared "volatile" than the 10 is substituted to it. In large programs it can be annoying to declare all variables "volatile", and after finishing the debugging to remove the "volatile" declaration. Is there a global way to force the compiler to actually allocate memory and substitute values to it except by declaring each variable as "volatile". thanks ahead, Fons Wouters. _________________________________________________________________ |
From: Josef P. <je...@sp...> - 2004-03-23 09:05:55
|
On Monday 15 March 2004 07:45, you wrote: > In large programs it can be annoying to declare all variables "volatile", > and after finishing the debugging to remove the "volatile" declaration. > Is there a global way to force the compiler to actually allocate memory and > substitute values to it except by declaring each variable as "volatile". I'm using the next defines in global header file #define int volatile int #define char volatile char -- Josef Pavlik |