|
| Version 2.6 Differences- Optimizer Level 6
The C166 Compiler now supports Optimizer Level 6 (OPTIMIZE(6)) which adds the following new optimizations:- Global constant propagation.
- Enhanced peephole optimization.
- Enhanced access to huge and xhuge objects.
- Loop rotation generates code that is faster and more efficient.
- Conversion of MUL and DIV operations with constant numbers into shift operations.
- Faster long-shift operations with constant shift factors.
- Global Common Subexpressions Elimination
The global common subexpressions optimization is improved. - Enhanced C167 Instruction Set Code Generation
The code generated for the C167 microcontroller is improved. Library routines are no longer used to access huge and xhuge variables.- Enhanced Startup Code
The startup files (STARTUP.A66 and START167.A66) are rewritten to include initialization of ADDRSEL and BUSCON registers and flexible assignment of DPP registers with the linker's DPPUSE directive. - HCompact Memory Model
The C166 Compiler now supports the HCompact memory model for the C167 CPU. This memory model increases the available address space for near objects and improves the generated code's performance. Furthermore, the linear memory programming model is much easier to understand. - HLarge Memory Model
The C166 Compiler now supports the HLarge memory model for the C167 CPU. This memory model increases the available address space for near objects and improves the generated code's performance. Furthermore, the linear memory programming model is much easier to understand. - New Library Routines Support xhuge Objects
Many new library routines now support the xhuge memory type. - _chkfloat_ Library Routine
The _chkfloat_ library routine supports rapid floating-point number error checking. - _chkdouble_ Library Routine
The _chkdouble_ library routine supports rapid floating-point number error checking. - NODPPSAVE Directive
The NODPPSAVE directive instructs the compiler not to preserve the DPP0 and DPP3 registers inside interrupt functions. - NOFIXDPP Directive
The NOFIXDPP directive instructs the compiler to generate code independent of DPP register contents. - REENTRANT Directive
The REENTRANT directive instructs the compiler to store automatic variables that cannot be allocated to a CPU register on the user stack. - STATIC Directive
The STATIC directive instructs the compiler to use static memory locations for automatic variables that cannot be allocated to a CPU register. - UNSIGNED_CHAR Directive
The UNSIGNED_CHAR directive instructs the compiler to treat all variables declared with char as unsigned char variables. - INCDIR Directive
The INCDIR directive specifies the location of the compiler include files. - NOALIAS Directive
The NOALIAS directive instructs the compiler to ignore pointer write operations during the optimization phase. - L166 DPPUSE Directive
The DPPUSE directive allows reassignment of the DPP registers to support up to 64K of NDATA and NCONST memory.
|
|