- Important information
- New features
- Known problems
- Program corrections
- User guide corrections
- Miscellaneous
- Release history
Important information
- Read the IAR C Compiler Reference Guide for detailed information about this product component.
New features
- None.
Known Problems
You cannot place the
DATA8_ID
andDATA16_ID
segments in the bank window (0x8000-0xBFFF).The size limit of 16 Kbytes for banked functions applies to all functions in the same compilation unit taken together. A compilation unit is normally one source file, but with multi-file compilation it can be multiple files.
Program Corrections
-
At optimization levels Low and above, built-in intrinsic functions such as
__enable_interrupt() and __no_operation(), could previously, depending on
context, accidentally be moved within a code block or removed altogether
by the optimizer.
[EW23417]
User guide corrections
-
Small register and banked register code models
Two new code models have been introduced with version 1.20.1 of the compiler, the small register and banked register code models. The two original code models remain, but they have been renamed. The small code model has been renamed to the small stack code model and the banked code model has been renamed to the banked stack code model.
The small register code model is identical to the small stack code model in all aspects except how function parameters are passed. Likewise, the same relationship exist between the banked register and the banked stack code models. Instead of passing all function parameters on the stack, the small register and banked register code models use the following algorithm to decide how parameters are passed:
- If there is at least one 16-bit function parameter in the parameter list, the leftmost such parameter is passed in register H:X.
- If there is at least one byte-sized function parameter in the parameter list, then the list is processed from left to right and the first byte-sized function parameter found is passed in register A. A second byte-sized function parameter, if present, is passed in register X, unless that register is already occupied by the lower half of a 16-bit parameter.
- All remaining function parameters are passed on the stack.
The following options are used to select one of the four code models from the command line:
small stack code model --code_model=small_stack small register code model --code_model=small_reg banked stack code model --code_model=banked_stack banked register code model --code_model=banked_reg The code models can also be selected from the IAR Embedded Workbench IDE, as described in the IAR Embedded Workbench IDE User Guide. The small register code model is default.
-
Prebuilt runtime libraries
As a result of the new code models, the number of prebuilt runtime libraries have doubled, from six to twelve. All library filenames start with
dls08
. The next two letters are eitherss
,sr
,bs
orbr
and are acronyms for the four available code models, small stack, small register, banked stack and banked register, respectively. The last letter prior to the filename extension is eithert
,n
, orf
, and denotes the library configuration as described in the IAR C Compiler Reference Guide. If the IAR Embedded Workbench IDE is used, the correct library object file and library configuration include file will be selected automatically, based on the options you select. -
Predefined runtime model attribute: __code_model
The predefined runtime model attributes in the compiler are described in the IAR C Compiler Reference Guide. The new code models in the compiler has changed the legal values for the __code_model runtime model attribute. The legal values are small_stack, small_reg, banked_stack and banked_reg, and they correspond to the code model used.
-
Predefined preprocessor symbol: __CODE_MODEL__
The predefined preprocessor symbol __CODE_MODEL__ identifies the code model in use and is described in the IAR C Compiler Reference Guide. The symbol reflects the --code_model option and is defined to __CODE_MODEL_SMALL_STACK__, __CODE_MODEL_SMALL_REG__, __CODE_MODEL_BANKED_STACK__, or __CODE_MODEL_BANKED_REG__.
Miscellaneous
- Nothing.
Release history
V1.20.2 2011-09-12
Program corrections-
All interrupt vectors, except the reset vector, were placed in a
segment incorrectly named INTVEC_C instead of INTVEC. The linker
subsequently treated this segment as being of type DATA. As a result,
these interrupt vectors were excluded from any ROM-only output image.
[EW22662]
V1.20.1 2011-02-11
Program corrections- None.
V1.10 2008-06-10
- Initial release of V1.xx.