Keil Logo

Version 3.2 Differences

  • ANSI Standard Automatic Integer Promotion
    The latest version of the ANSI C Standard requires that calculations use int values if char or unsigned char values might overflow during the calculation. This new requirement is based on the premise that int and char operations are similar on 16-bit MCUs. C51 supports this feature as the default and provides you with two new directives, INTPROMOTE and NOINTPROMOTE, to enable or disable integer promotion.

    There is a big difference between 8-bit and 16-bit operations on the 8-bit 8051 in terms of code size and execution speed. For this reason, you may want to disable integer promotion by using the NOINTPROMOTE directive.

    However, if you wish to retain maximum compatibility with other C compilers and platforms, leave integer promotions enabled.
  • Assembly Source Generation with In-Line Assembly
    You may use the new directives ASM and ENDASM to include source text to output to .SRC files generated using the SRC directive.
  • New Directives
    The directives ASM, ENDASM, INTERVAL, INTPROMOTE, INTVECTOR, MAXARGS, and NOINTPROMOTE have been added or enhanced.
  • Offset and Interval Can Now Be Specified for Interrupt Vectors
    You may now specify the offset and interval for the interrupt vector table. These features provide support for the SIECO-51 derivatives and allow you to specify a different location for the interrupt vector in situations where the interrupt table is not located at address 0000h.
  • Parameter Passing to Indirectly Called Functions
    Function parameters may now be passed to indirectly called functions if all of the parameters can be passed in MCU registers. These functions do not have to be declared with the reentrant attribute.
  • Source Code Provided For Memory Allocation Functions
    C source code for the memory allocation routines is now provided with the C51 Compiler. You may now more easily adapt these functions to the hardware architecture of your embedded system.
  • Trigraphs
    The C51 Compiler now supports trigraph sequences.
  • Variable-length Argument Lists for All Functions
    Variable-length argument lists are now supported for all function types. Functions with a variable length argument list do not have to be declared using the reentrant attribute. The new command line directive MAXARGS determines the size of the parameter passing area.
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.