Introduction

Arm Compiler provides the earliest, most complete, and most accurate support for the latest architectural features and extensions of the Arm architecture. Arm Compiler supports all the latest Arm Cortex, Neoverse and SecurCore processors, including cores that are in development.

Arm Compiler is a mature toolchain that is tailored to the development of bare-metal software, firmware, and Real-Time Operating System (RTOS) applications. Arm Compiler is used by leading companies in a wide variety of industries, including automotive (ISO 26262), consumer electronics, industrial (IEC 61508), medical (IEC 62304), networking, railway (EN 50128), storage, and telecommunications. For HPC and scientific applications, see the Linux user-space C/C++ Compiler and Linux user-space Fortran compiler.

The Arm Compiler includes many powerful space-saving and performance-enhancing optimization techniques, including low-level microarchitecture-specific instruction scheduling, unused section elimination, and aggressive Link-Time Optimization (LTO).

Components

  1. armclang:
    1. Is built on modern LLVM and Clang technology
    2. Supports GNU syntax assembly
    3. Is highly compatible with source code originally written for GCC
    4. Implements specifications including ANSI/ISO C and C++, ABI for the Arm architecture, ABI for the 64-bit Arm architecture, and Arm C Language Extensions (ACLE)
  2. armlink: Feature-rich dedicated embedded linker that combines objects and libraries to produce an executable
  3. Arm C libraries: Optimized by Arm for performance and code density, and include the tiny MicroLib for deeply embedded applications.
  4. Arm C++ libraries: Libraries based on the LLVM libc++ project
  5. fromelf: Image conversion utility and disassembler
  6. armar: Archiver that enables sets of object files to be collected together

Workflow

Use cases

Developing efficient software

From low-cost, memory-constrained embedded systems to high-end complex heterogeneous systems, Arm Compiler is optimized for a wide range of embedded workloads, with performance and code density that can be tuned for your specific target application.

Verifying system design

Developed in collaboration with Arm’s processor and architecture projects, Arm Compiler is the ideal toolchain for verifying your design. Arm Compiler provides the earliest, most complete, and most accurate support for the latest Arm cores and architectural extensions.

Exploring Arm architecture features

Selecting the right Arm IP is one of the most important decisions for your SoC design. Combined with Arm Flexible Access, Arm Compiler lets you evaluate which Arm solution best suits your application and market requirements.

Building safety-critical code

Developing complex safety-related applications can be challenging and time-consuming. Specific releases of Arm Compiler and the C Libraries have been certified by TÜV SÜD for development to the most demanding Safety Integrity Levels (SIL), accelerating your certification process.

Developing for secure systems

Some critical systems, like Secure firmware, have specific security requirements. Arm Compiler lets you generate execute-only code, and securely interface between Secure and Non-secure software in systems that implement TrustZone for Armv8-M.

Get Arm Compiler

Try Arm Compiler

Get a free 30-day license for Arm Compiler in Development Studio, or through a seven-day evaluation of Keil MDK Professional.

Evaluate

Already have a license?

Install: Arm Compiler is included with our development suites Development Studio or Keil MDK.

Update: To update Arm Compiler in your existing Development Studio or Keil MDK installation, download the latest Arm Compiler.

Arm Compiler for Functional Safety

Get entitlement to the Qualified Arm Compiler for Functional Safety by licensing any of the following:
Arm Development Studio Gold or Platinum edition,
Keil MDK Professional edition,
or a specific qualified Arm Compiler for Functional Safety branch.

Support

Community Blogs

Community Forums

Suggested answer icc_sre_el2 register not recognised with arm-none-eabi 0 votes 166 views 1 replies Latest yesterday by Tamar Christina Answer this
Suggested answer Migrating from armcc to armclang causes section type conflict
  • Arm Compiler 6
  • Compilation error
  • Arm Compiler 5
  • Memory
0 votes 172 views 2 replies Latest 3 days ago by embedded.kyle Answer this
Answered Token-pasting ("##") with armcc 5.06
  • Keil MDK
  • Arm Compiler 5
0 votes 248 views 2 replies Latest 4 days ago by Brandon Price Answer this
Suggested answer The problem of modifying the cache parameter in the Canvas
  • Software and Services
0 votes 1109 views 6 replies Latest 4 days ago by qiqi Answer this
Not answered Getting "makedepend: error: out of space: increase MAXFILES" error 0 votes 131 views 0 replies Started 7 days ago by veeresh_hyd Answer this
Suggested answer Illegal exception in __start in newlib crt0.s for Cortex R52
  • GCC
0 votes 123 views 1 replies Latest 8 days ago by Suhas Answer this
Not answered I have multi cores traffic , how can find the number of misses caches for l2 by using gem5
  • gem5
0 votes 145 views 0 replies Started 8 days ago by furat Answer this
Not answered "libc_nano.a" is not present for Cortex-A55 (Windows version ) 0 votes 166 views 0 replies Started 9 days ago by p14589.ch Answer this
Suggested answer frame pointer in arm32/armv7a 0 votes 385 views 2 replies Latest 10 days ago by sushmita Answer this
Answered ARM compilers are no longer available 0 votes 412 views 2 replies Latest 15 days ago by Ronan Synnott Answer this
Suggested answer Do you order using the V5 compiler or the V6? 0 votes 292 views 2 replies Latest 15 days ago by Paul Black Answer this
Answered Complier V6 optimization problem 0 votes 470 views 3 replies Latest 16 days ago by Paul Black Answer this
Suggested answer icc_sre_el2 register not recognised with arm-none-eabi Latest yesterday by Tamar Christina 1 replies 166 views
Suggested answer Migrating from armcc to armclang causes section type conflict Latest 3 days ago by embedded.kyle 2 replies 172 views
Answered Token-pasting ("##") with armcc 5.06 Latest 4 days ago by Brandon Price 2 replies 248 views
Suggested answer The problem of modifying the cache parameter in the Canvas Latest 4 days ago by qiqi 6 replies 1109 views
Not answered Getting "makedepend: error: out of space: increase MAXFILES" error Started 7 days ago by veeresh_hyd 0 replies 131 views
Suggested answer Illegal exception in __start in newlib crt0.s for Cortex R52 Latest 8 days ago by Suhas 1 replies 123 views
Not answered I have multi cores traffic , how can find the number of misses caches for l2 by using gem5 Started 8 days ago by furat 0 replies 145 views
Not answered "libc_nano.a" is not present for Cortex-A55 (Windows version ) Started 9 days ago by p14589.ch 0 replies 166 views
Suggested answer frame pointer in arm32/armv7a Latest 10 days ago by sushmita 2 replies 385 views
Answered ARM compilers are no longer available Latest 15 days ago by Ronan Synnott 2 replies 412 views
Suggested answer Do you order using the V5 compiler or the V6? Latest 15 days ago by Paul Black 2 replies 292 views
Answered Complier V6 optimization problem Latest 16 days ago by Paul Black 3 replies 470 views