Hello!
I have uVision that compiles fine with the C51 v7.03 compiler and the related package, but not complete with the 8.06. I used two different Keil installations. All files are in the same folder.
In the 8.06 I get linker errors like "object does not fit in to pdata page" and "0080H". This looks like the compiler was thinking the PDATA was only 128 bytes, but it is set to 256 bytes in the startup.a51. Any clue what's different in the newer Keil package?
Also there is a warning in 8.06 (which does not show in 7.03) "converting non-pointer to pointer" on this
ptr_xdata = sPtr_obj->Adresse;
while the vars are set like this:
uchar uc_set_obj( uchar pdata *ptr_Set) { uchar i; uchar xdata *ptr_xdata; struct stOBJADR code *sPtr_obj; sPtr_obj=&Obj[*ptr_Set]; . . . ptr_xdata = sPtr_obj->Adresse; }
The struct stOBJADR has a member "uint Adresse;"
I can see no wrong use of the pointers. I just want to be sure that the warning does not affect the code to not work correctly.
You all may call me unteachable, but this is my way of understanding this confusing topic.
You got that backwards. It's exactly your way of thinking that renders this topic so confusing for you. It's getting in the way of your understanding it.
Your private terminology is based on firmly held, yet incorrect beliefs. Mismatch of thought with reality is the consequence. That's pretty much the definition of "confusion".
The address of an ordinary variable is generally every bit as important as its value. The same holds for pointer variables: their address is as important as their value. Pretending otherwise will bite you in the lower back soon enough.
"You all may call me unteachable"
OK then: you are unteachable; that is, in English, at least.
Maybe it'd be better if you could find someone to explain this to you in your own language?