|Non-Confidential||PDF version||ARM 100748_0607_00_en|
|Home > Getting Started > 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
legacy ARM-syntax assembly code. Use the
armclang assembler 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 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.
The ARM C++ libraries are based on the LLVM libc++ project:
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.
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.