Keil™, An ARM® Company

C166 User's Guide

Version 3.0 Differences

  • Startup Code
    The startup code supports more features and greater flexibility. When upgrading existing applications, be sure to use the new startup code.
  • Optimizer Level 7
    The C166 Compiler supports Optimizer Level 7 (OPTIMIZE(7)) which adds Common Tail Merging. Refer to OPTIMIZE for more information.
  • _pop_ Intrinsic Library Routine
    The _pop_ library routine pops words off of the system stack.
  • _prior_ Intrinsic Library Routine
    The _prior_ library routine calculates the number of shifts required to normalize a word.
  • _priord_ Intrinsic Library Routine
    The _priord_ library routine calculates the number of shifts required to normalize a 32-bit value.
  • _push_ Intrinsic Library Routine
    The _push_ library routine pushes words onto the system stack.
  • strtod Library Routine
    The strtod library routine converts a string to a double.
  • strtol Library Routine
    The strtol library routine converts a string to a long.
  • strtoul Library Routine
    The strtoul library routine converts a string to an unsigned long.
  • ASMEXPAND and NOASMEXPAND Directives
    The ASMEXPAND and NOASMEXPAND directives select whether or not the C preprocessor expands symbols in ASM/ENDASM blocks.
  • BYTEALIGN Directive
    The BYTEALIGN directive enables compiler support for pointers to byte-aligned structures.
  • DYNAMICUSRSTK Directive
    The DYNAMICUSRSTK directive allows you to specify that the user stack is dynamic. This is required for custom real-time kernels that change the stack for each task.
  • EXTINS Directive
    The EXTINS directive causes the compiler to terminate EXT sequences on a line-by-line basis. This eases debugging and makes it easier to follow program execution because single-steps execute a single line at a time.
  • FIXPEC Directive
    The FIXPEC directive prevents the compiler from generating JMP-to-JMP constructs that may cause problems with the PEC on some C16x/ST10 devices.
  • NOFRAME Directive
    The NOFRAME directive specifies that interrupt service routines are created without prolog or epilog code.
  • PACK Directive
    The PACK directive allows you to specify the alignment the compiler uses when packing structures.
  • PREPRINTONLY Directive
    The PREPRINTONLY directive allows the compiler to generate a preprocessor listing file without creating an object file.