The ARM Compiler in the RealView Development Suite 4.0 is the only compiler co-developed with the ARM processors and specifically designed to optimally support the ARM architecture. It is the result of 20 years of development and is recognized as the industry standard C and C++ Compiler for building applications targeting the ARM, Thumb, Thumb-2, VFP and NEON instruction sets. ARM processors are designed to best execute code generated by the ARM Compiler ARM Compiler enables the new processor features in all the ARM processors New Profile-Driven Compilation automatically optimizes code based on runtime information The ARM Compiler supports building of Symbian OS and ARM Linux applications and libraries The latest release of the ARM Compiler reduces the best codesize by up to an additional 5% and improves the best performance by 10-15%.
In addition to the ARM Compiler, the state-of-the-art NEON Vectorizing Compiler, which is part of RealView Development Suite Professional, enables the automatic generation of ARM NEON SIMD code sequences from standard C and C++ code. Using the NEON Vectorizing Compiler can speed-up critical multi-media kernels by 4X, resulting in 2X overall application performance increase.  Development for Severely Cost-Sensitive Devices To further improve code density for the range of ARM processor-based applications, the ARM Compiler features a new optional microlib C library (a subset of the ISO standard C runtime library), which has been minimized in size for microcontroller applications. The microlib C library achieves a 92 percent reduction in runtime library code size.When combined with the CortexTM-M3 processor, the microlib C library provides a completely C-based development environment without the need to revert to assembly language-- even for interrupt service routines. This removes the need for specific knowledge of the ARM architecture.  Memory savings provided by the microlib C library will depend on the application, from ‘hello world’ (97 percent reduction) to more complex applications such as Dhrystone (50 percent reduction).
Reducing Risk for Linux Application Development The ABI for the ARM architecture created by the ARM Compiler team is also implemented in the GNU compiler for ARM. This enables the creation and use of libraries that can be shared between development environments.
The compatibility between GNU Compiler and the ARM Compiler also means that Linux applications can be built using the ARM Compiler. The ARM Compiler provides your development team with high-quality support and the performance, stability and code size benefits you expect from a quality commercial toolkit.
Accurate Code Generation Many algorithms are now automatically generated from mathematical modelling software using floating point representations for data. Therefore, the accuracy of IEEE bit representation and floating point representations is essential for correct operation of the generated code.
The default library selected by the ARM Compiler offers a full complement of C/C++ functionality, including C++ exception handling and IEEE 754 floating point support. The compiler can optionally generate code to use either software floating point or any of the ARM hardware floating point units. Independent of the method used, the compiler generates full IEEE 754-compliant code. This means that your application will generate exactly the same data regardless of the target processor, speeding porting from one device to another. Targeting Advanced Maths and DSP-Style Solutions Intrinsic functions provide support for common code sequences or instructions that do not map well onto high-level languages.
The ARM Compiler supports three classes of intrinsic function: - ETSI intrinsics provide telecom primitives, which are used in a number of example algorithms
- TI C55 intrinsics provide for support for algorithms written to exploit TI-specific extensions
- Other intrinsics allow access to all ARM hardware instructions not easily accessible from C, reducing the need to write code in assembly language
Where possible, intrinsics are emulated on early processors. 
Key features of the ARM Compiler and its utilities
- Full ISO C and C++ support (including ISO C99 support)
- Implementation of ARM C/C++ ABI for the ARM architecture:
- Object files conform to industry standard ELF and DWARF
- Enables mixing of object code compiled with other ABI-compliant compilers, e.g. GNU GCC
- Industry-leading code size optimization
- Industry-leading code performance optimization
- Compilation for ARM, Thumb, Thumb-2 and VFP instruction sets
- Independently selectable debug and optimization levels
- Processor-specific optimizations for all available and planned ARM architectures
- Powerful macro assembler for ARM, Thumb and Thumb-2 instructions
- Intrinsic functions allow access to ARM features such as saturating maths, which are not directly expressible in C or C++
- Professional: The vectorizing compiler for the NEON™ SIMD signal processing architecture, which enables direct compilation of standard C to target NEON SIMD hardware
- Professional: Profiler-driven Compilation deliver better performance and smaller codesize
Linker - ELF and DWARF industry standards supported for object file and debug table formats
- Seamless interworking of ARM, Thumb, and Thumb-2 object code
- Scatter-loading feature supports placement of code and data within sophisticated target memory maps
- Automatic removal of unreferenced code areas
- Link-time code generation enabling global cross file optimization
Image Conversion Tool - Converts from ELF images into other formats that are downloadable or suitable for various Flash utilities
- Binary, Motorola 32-bit S-record, Intel Hex-32 and Byte Oriented Hex formats are supported
- Displays information about the input file, e.g. disassembly output or symbol listings
ARM Object File Librarian/Archiver - Enables sets of ELF object files to be collected together and maintained in libraries
- Supports merging of libraries
C and C++ Libraries - The full ISO standard C libraries consist of:
- Functions defined by the ISO C library standard
- Target-dependent functions used to implement the C library functions in the semihosted execution environment
- Helper functions used by the C and C++ compilers
- The standardlib floating-point library providing five different floating point models
- ieee_full: A full IEEE 754 standard conforming version with configurable rounding mode and imprecise exceptions for when the highest level of accuracy and predictability of computation is required
- ieee_fixed: A full IEEE 754 standard conforming version with fixed rounding mode and no imprecise exceptions that will satisfy most IEEE 754 requirements and runs at a higher performance
- ieee_no_fenv: A full IEEE 754 standard conforming version which does not maintain any state to improve performance even further
- std (default): The C language required floating point model
- fast: An very fast floating point model, which matches the ARM hardware VFP fastmode
- The microlib C library, which is targeted to the common deeply embedded use case of the C library and significantly reduced memory needs
- The standardlib library utilizes Semihosting as a mechanism to provide OS support (time, fileIO, etc.) on bare metal devices, which means that even code dependent on OS support works ‘out of the box’ when connected to a debugger
- The ISO standard Full C++ Standard language Library consist of:
- Functions defined by the ISO C++ library standard
- C++ runtime environment to enable the features of the C++ language, like exceptions and RTTI
|
|