µVision4 User's Guide
MDK-ARM C/C++ Compiler
- Sets preprocessor symbols which can be checked with
#if, #ifdef and #ifndef. The defined names are
copied exactly as they are entered (case-sensitive). Optionally,
each name may get a value. Define: Check, NoExtRam, X1=1+5
is identical to the following C preprocessor #define
#define X1 1+5
- Clears previous Define assignments that are
entered in the options dialog of a higher Target or Group level.
Language / Code Generation
- Enable ARM/Thumb Interworking
- Generates code that can be called in any CPU mode
(ARM or Thumb). The option is available only for CPUs that can
switch between ARM and Thumb mode. Sets the compiler command-line
Control compiler code optimization for the generated code. Sets
the compiler command-line option -Onum:
Default: Use the compiler default or the setting of
a higher Target or
Level 0 (-O0): Turn off all optimization, except
some simple source transformations.
Level 1 (-O1): Turn off optimizations that seriously
degrade the debug view.
Level 2 (-O2): High optimization (default level).
The debug view might be less satisfactory because the mapping
of object code to source code is not always clear.
Level 3 (-O3): Maximum optimization. Note that
Level 3 in combination with Optimize for Time may
generate more code that Level 2 since it may unroll
- Optimize for Time
- Reduce execution time at the possible expense of a
larger code size. Sets the compiler command-line option -Otime. If
not enabled, the compiler assumes -Ospace.
- Split Load and Store Multiple
- Instructs the compiler to split LDM and STM
instructions into two or more LDM or STM instructions to reduce
interrupt latency. When the LDM/STM have more than 5 (more than 4
when the PC is changed) CPU registers, several LDM/STM instructions
are generated. Sets the compiler command-line option --split_ldm.
- One ELF Section per Function
- Generate one ELF section for each function in source
file. Output sections are named with the same name as the function
that generates the section. Allows to optimize code or to locate
each function on individual memory addresses. Sets the compiler
command-line option --split_sections.
- Strict ANSI C
- Check for strict ANSI C conformance of the source
file. Sets the compiler command-line option --strict.
- Enum Container always int
- When disabled, the data type container for
enum is optimize according the value range. When enabled,
the data type container for enum is always signed
int. Sets the compiler command-line option --enum_is_int.
- Plain Char is Signed
- Instructs the Compiler to treat all variables
declared with plain char as signed char variables.
Sets the compiler command-line option --signed_chars.
- Read-Only Position Independent
- Generate position independent code for const (ROM)
accesses. Sets the compiler command-line option --apcs=/ropi.
- Read-Write Position Independent
- Generate position independent code for variable
(RAM) accesses. Sets the compiler command-line option --apcs=/rwpi.
- Control generation of warning messages. Default is
unspecified, which defaults to All Warnings. The
selection No Warnings sets the command-line option -W.
- Thumb Mode
- Select explicitly Thumb or ARM code for a file or
file group. Note: in the dialog Target the selection of the
field Code Generation sets the default.
- No Auto Includes
- Suppress all C/C++ paths that are included
automatically during compilation. System includes, such as
stdio.h, are not affected by the settings of this box.
Compiler auto-include paths can be viewed in the field Compiler
- Include Paths
- Allows you to supply one or more (separated by
semi-colon) paths to search for header files. For example, for
#include "filename.h" the Compiler searches the current
folder first and then the folder of the source file. When this
fails or when #include <filename.h> is used, the paths
specified in the include paths box are searched. When this search
fails again, then the paths specified in the field INC under
Project — Components, Environment,
Books ... are used.
- Misc Controls
- Specify any directive for which there is no
individual dialog control.
- Compiler control string
- Displays the current directives at the Compiler