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.
I written this code and it compiles just fine. However, when I tried to include <stdio.h> library to use with my hyperterminal, it says that it compiled, but can not link. Here is the message that it gave me... ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GROUP_ LENGTH: 0070H My memory model is "Small: variables in DATA". When I changed it to compact or large, my program will compile and link, but it behaves differently when I put program it to the Philips 89C664.. thanks Tommy
I written this code and it compiles just fine. So why is your title "Can't Compile?!" ;-) See the recent Thread, Differences between compiler versions When you include the extra functions, they require some space for parameters & their own internal variables as well as just code space - which is why you got the DATA space overflow in Small model. When you switch to COmpact or Large, your code starts using "External" [1] memory, MOVX instructions, and the DPTR. There could be a hardware fault with your XRAM, or a timing difference which causes your code to fail, something might be corrupting your DPTR(s), your Startup code might not be properly initialising your XRAM & revealing flaws like uninitialised variables in your code, you may have mis-used memory-specific pointers, etc, etc [1] "External" here means "outside the CPU core" - although it may be packaged within the IC, it is still outside the core & has to be addessed with MOVX.
The REAL problem here is that in SMALL memory model, you are limited to a total of 128 bytes of variable space, period. In large model, you are limited to 64K bytes of variables space. So, the following program:
unsigned char array [121]; void main (void) { }