New options:
-K
Enable C++ comments. Enables comments in C++ style, i.e. a comment
is introduced by // and extends to the end of
the line. Normally, for compatibility, the compiler does
not accept C++ style comments. If your source includes C++
style comments, you must use the -K option for them to be accepted.
-X
Describe C declarations. Displays an English description
of each C code declaration in the file. To obtain English
descriptions of the C code declarations, to aid the
investigation of error messages, you must use the -X
option.
-n file
Generate preprocessor output on: <file><.i>
-Nprefix
Generate preprocessor output on:
<prefix><source><.i>
BSEARCH.C QSORT.C STRERROR.C STRTOK.C STRXFRM.C
Changed C library functions.
The functions below are changed compared to V5.12 and
earlier, mainly due to the fact that the float routines
and the heap have been optimized.
ACOS.C ASIN.C ATAN.C ATAN2.C CEIL.C COS.C COSH.C EXP.C EXP10.C FABS.C FLOOR.C FMOD.C FREE.C FREXP.C HEAP.C LDEXP.C LOG.C LOG10.C MALLOC.C MODF.C POW.C PRINTF.C RAND.C REALLOC.C SATAN.C SIN.C SINH.C SINUS.C SQRT.C SRAND.C STRTOD.C STRTOL.C STRTOUL.C TAN.C TANH.C TOLOWER.C TOUPPER.C
STDLIB.H:
abs() fabs()labs()
General:
In the future any string operation (STRxxx, MEMxxx) may
use the multiple DPTRs on XDATA and code memory. With ICC8051
v5.20 the following functions may use multiple DPTRs in
XDATA or code memory.
MEMCHR MEMCMP MEMCPY MEMMOVE
STRCAT STRCMP STRCOLL STRCPY STRCSPN STRNCAT STRNCMP
STRNCPY STRPBRK STRSPN STRSTR STRTOK STRXFRM
In order to use the facilities of different chips you have to include target specific libraries in the project:
1. Find out which library you want to include.
2. Place the library name on the line before the default
library in the link-file (.xcl).
3. Link the project with this new link-file.
Siemens SAB 8XC517:
We now support the multiple DPTRs in the 8XC517 chip.
This means that some of our library functions such as
strcmp and memcmp can take advantage of the multiple
DPTRs and produce more efficient code.
The implementation is that the library uses a pair of DPTRs, i.e. flips the low bit in sfr DPSEL (0x92) to get hold of the other DPTR. At reset of the chip, the lower 3 bits of DPSEL are set to 0, and this will force the libraries to use DPTR 0 and 1. You can change this by setting the sfr DPSEL to another DPTR pair.
In order to get support for the 8XC517 chip you have to include one or more 517 libraries. There are three different additional libraries for the 8XC517 chip, CL517.R03, CL517I.R03 and CL517STR.R03.
Name Description:
CL517.R03 Not interruptable integer, long and float
arithmetic library.
CL517I.R03 Interruptable integer, long and float arithmetic library.
CL517STR.R03 String operations that use 8XC517 multiple DPTRs.
Dallas Semiconductor DS80C320:
We now support the dual DPTRs in the 80C320 chip. This
means that some of our library functions such as strcmp
and memcmp can take advantage of the multiple DPTRs and
produce more efficient code.
In order to get support for the 8XC320 chip you have to include the 320 library. This is named CL320STR.R03.
Name Description:
CL320STR.R03 String operations that use 8XC320 multiple
DPTRs.
Syntax: storage-class idata_reentrant function _declarator
Description:
The compiler now supports a SMALL REENTRANT function call.
This means that the software stack is placed in the idata
memory.
Pragma:
Syntax: #pragma function=reentrant_idata
Description: Use the reentrant_idata pragma to give functions a simulated stack in idata.
User_error 154 is now reported with:
"returning bit is not allowed in reentrant function"
"only XDATA allowed as local memory attribute in
reentrant function"
"only idata allowed as local memory attribute in reentrant_idata
function"
The preprocessor directive overlay is used to control how the overlay of function parameters and local variables should be done. The default mode for overlay (can be forced by #pragma overlay=default) is to leave the decision on wether to overlay function parameters and local variables to XLINK (see also xlink option -a). The default mode for the linker is to use the static overlay method. Static overlay means that function parameters and auto variables are located in a static memory area (segment C_ARGD) that is shared among all functions on the same calling depth.
When overlay is off the function parameters (that are not in register) and auto variables for function on the same calling depth is mapped into separate memory slots (note that they are not located on stack).
When #pragma overlay=off is given the overlay will be off for the next function in turn to be compiled and will be off until the end of module (c file) or until a #pragma overlay=default is reached.
Copyright 2001 IAR Systems. All rights reserved.