The Best-In-Class Compiler for the ARM® Architecture
The ARM Compiler in DS-5™ Professional Edition is the only commercial 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.
The highly efficient ARM Compiler invokes powerful optimization techniques such as loop unrolling, function inlining, idiom recognition, architecture-specific instruction schedulling and NEON autovectorization.
- ARM Compiler v5.0 improves the best performance by up to 15% when compared to RVDS 4.0 compiler.
The state-of-the-art NEON autovectorization feature of the ARM Compiler enables the automatic generation of ARM NEON SIMD code sequences from standard C and C++ source code.
- --vectorize can speed-up critical multimedia kernels by up to 4X
Superior Code Size Reduction
The ARM Compiler has a long embedded heritage, where memory space is often a prized commodity. The ARM Compiler incorporates techniques which can reduce your application footprint by up to 30% compared to other compilers. The ARM Compiler comes with an optional microlib C library which has been minimized to achieve up to 50 percent reduction in runtime library code size.
- The ARM Compiler v5.0 reduces the best codesize by up to 5% when compared to RVDS 4.0 compiler.
When combined with a Cortex™-M series 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.
Whether you are creating a modern multimedia application targeting NEON SIMD on a Cortex-A15 processor or rebuilding a 10 year old library targeting the ARM7TDMI®, you only need a single DS-5 Professional Edition license. That is because the ARM Compiler supports ALL ARM cores. Furthermore, if you want to make a minor change to an old code base and rebuild with the original compiler, you can do that too, because the DS-5 ARM Compiler license is backwards compatible with all previous versions of the ARM Compiler, including RealView Compilation Tools (RVCT) and the ARM Development Suite (ADS).
The ARM Compiler Stack Protection feature protects against malicious return address modifications which could lead to unwanted software probing sensitive data on your device or taking control of it altogether by redirecting control flow. The ARM Compiler Stack Protection feature inserts a randomly generated stack “canary” between vulnerable buffers and the stack frame return address, which can detect stack attacks before your device data is compromised. The Stack Protection mechanism can also be used to detect unintentional stack buffer overwrites, adding a level of fault detection to your system.
Intrinsic functions provide support for common code sequences or instructions that do not map well onto high-level languages – enabling users to avoid writing low level assembly code. Intrinsics provide similar functionality to inline assembly with the added benefits of type checking and automatic register allocation.
- NEON intrinsic target the NEON SIMD engine found on advanced ARM processors
- Cortex-M4 intrinsics for targeting the onboard DSP
- 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
Many algorithms are now automatically generated from mathematical modeling 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.