I am debugging and looking at code generated by the C compiler (for a Silabs 8051F312) and I am seeing it go to the middle of code in breaking from a case statement. Of course its infuriating ... so I suspected that it was the code optimizer but no, it really completely subverted my logic. Where do I do to follow its bad logic and pinpoint the problem. The .lst doesn't help since its shows the code all nested fine. I was thinking the line files are screwed up but recompiling it gets the same results. The assembly code, clearly shows the jump into the middle of code shown in the line files. HELP??? :)Rik
unforunately not. Sad to say, hard to figure, but the source compiles wrong. You see, I am setting up a particular value to a variable for a state machine and then I have a break to leave the switch/case. The assembly clearly shows it going to a place close to the end of the switch but to an instruction with the same state machine variable (the second line of two clean lines of code). Unfortunately, that state variable setting is the wrong setting. The grey boxes for the debugger and the even the assembly/line listing blatantly show the compilation mistake. I readily imagine that the process of code generation is stable - but this is blatantly bad code generation. I don't know how the assembler listing binds to the C line listing. I am pretty sure i am rebuilding everything everytime so i don't know what file could be stale (needing to be remade). I have regressed back to a version that works which wastes a few days (weekends you know). Thanks for listening ... compiler generation bugs are the most scary of all. :)Rik
Have you reported this to our technical support department? What version of the compiler are you using? Can you show the listing with the bad code? If there is a problem in the compiler we would like to correct it. However, to do that we need your help. Jon