Introduction to ARM® Compiler 6
ARM® Compiler 6 is the most advanced C and C++ compilation toolchain from ARM for ARM Cortex processors. ARM Compiler 6 is developed alongside the ARM architecture, and is therefore tuned to generate highly efficient code for embedded bare-metal applications ranging from small sensors to 64-bit devices.
ARM Compiler 6 is a component of ARM DS-5 Development Studio and Keil MDK-ARM. Alternatively, you can use ARM Compiler 6 as a standalone product. The features and processors that ARM Compiler 6 supports depend on the product edition. See ARM Developer for the specification of the different standard products.
ARM Compiler 6 combines the optimized tools and libraries from ARM with a modern LLVM-based compiler framework. The components in ARM Compiler 6 are:
The compiler and integrated assembler that compiles C, C++, and GNU assembly language sources.
The compiler is based on LLVM and Clang technology.
Clang is a compiler front end for LLVM that supports the C and C++ programming languages.
The legacy assembler. Only use
armasmfor legacy ARM-syntax assembly code. Use the
armclangassembler and GNU syntax for all new assembly files.
The linker combines the contents of one or more object files with selected parts of one or more object libraries to produce an executable program.
- The archiver enables sets of ELF object files to be collected together and maintained in archives or libraries. You can pass such a library or archive to the linker in place of several ELF files. You can also use the archive for distribution to a third party application developer.
The image conversion utility can convert ARM ELF images to binary formats and can also generate textual information about the input image, such as its disassembly and its code and data size.
- ARM C++ libraries
The ARM C++ libraries are based on the LLVM libc++ project:
- The libc++abi library is a runtime library providing implementations of low-level language features.
- The libc++ library provides an implementation of the ISO C++ library standard. It depends on the functions that are provided by libc++abi.
- ARM C libraries
The ARM C libraries provide:
An implementation of the library features as defined in the C standards.
Nonstandard extensions common to many C libraries.
POSIX extended functionality.
Functions standardized by POSIX.
A typical application development flow might involve the following:
Developing C/C++ source code for the main application (armclang).
Developing assembly source code for near-hardware components, such as interrupt service routines (armclang, or armasm for legacy assembly code).
Linking all objects together to generate an image (armlink).
Converting an image to flash format in plain binary, Intel Hex, and Motorola-S formats (fromelf).
The following figure shows how the compilation tools are used for the development of a typical application.
Figure 1-1 A typical tool usage flow diagram
ARM Compiler 6 has more functionality than the set of product features that are described in the documentation. The various features in ARM Compiler 6 can have different levels of support and guarantees. For more information, see Support level definitions.