Overview

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

  • armclang:
    • Is built on modern LLVM and Clang technology
    • Supports GNU syntax assembly
    • Is highly compatible with source code originally written for GCC
    • 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)

  • armlink: Feature-rich dedicated embedded linker that combines objects and libraries to produce an executable

  • Arm C libraries: Optimized by Arm for performance and code density, and include the tiny MicroLib for deeply embedded applications.

  • Arm C++ libraries: Libraries based on the LLVM libc++ project

  • fromelf: Image conversion utility and disassembler

  • armar: Archiver that enables sets of object files to be collected together

Workflow

Arm Compiler workflow diagram

Use cases

Optimize resources icon black

Develop efficient software

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

Validated foundation icon black

Verify system design

Developed in collaboration with Arm 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.

Hardware icon black

Explore 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.

Secuirty shield icon black

Build 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.

Security lock icon black

Develop 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

Black coloured download icon

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

Support

Community Forums

Suggested answer AMBA APB Why can't we have 64 bits wide?
  • APB
0 votes 1267 views 7 replies Latest 2 days ago by tv-pavan Answer this
Answered ARM clang compiler errors out as - error: unknown register name 'cp15:0:c9:c12:0'
  • Arm Compiler 6
  • Arm Compiler
0 votes 829 views 5 replies Latest 6 days ago by Anupam_on Answer this
Suggested answer Project switching from compiler V5 to V6 0 votes 354 views 2 replies Latest 8 days ago by Nina_su Answer this
Suggested answer How to solve: undefined reference to `__sync_synchronize' 0 votes 840 views 6 replies Latest 12 days ago by a.surati Answer this
Suggested answer What is the difference between gcc-arm-aarch64-none-linux-gnu and gcc-arm-aarch64-none-elf tool-chains?
  • Cross compiling
0 votes 674 views 2 replies Latest 13 days ago by Jerome Decamps - 杜尚杰 Answer this
Not answered ARM GCC testsuite reports available?
  • GCC
  • Test and Validation
0 votes 104 views 0 replies Started 14 days ago by ajcurtis84 Answer this
Answered GCC Embedded Toolchain port to Apple silicon ? 0 votes 1664 views 2 replies Latest 16 days ago by dasnaghi Answer this
Suggested answer Compiler option to generate CPU log file
  • Compilers
  • Cortex-M0+
0 votes 918 views 5 replies Latest 16 days ago by Nazar Answer this
Answered What is the advantage of uint8_t over char or bool?
  • CMSIS
0 votes 471 views 3 replies Latest 17 days ago by Andy Neil Answer this
Answered How to migrate retarget.c from ARM Compiler 5 to ARM Compiler 6?
  • Arm Compiler 6
  • Arm Compiler 5
0 votes 467 views 3 replies Latest 17 days ago by coldspark Answer this
Suggested answer I need blink my led in "distress signal" Urgent please 0 votes 411 views 1 replies Latest 20 days ago by Andy Neil Answer this
Not answered STM32h7: USART doesn't work anymore after switching from compiler V5.06 to V6.14 0 votes 253 views 0 replies Started 1 months ago by Andi Answer this
Suggested answer AMBA APB Why can't we have 64 bits wide? Latest 2 days ago by tv-pavan 7 replies 1267 views
Answered ARM clang compiler errors out as - error: unknown register name 'cp15:0:c9:c12:0' Latest 6 days ago by Anupam_on 5 replies 829 views
Suggested answer Project switching from compiler V5 to V6 Latest 8 days ago by Nina_su 2 replies 354 views
Suggested answer How to solve: undefined reference to `__sync_synchronize' Latest 12 days ago by a.surati 6 replies 840 views
Suggested answer What is the difference between gcc-arm-aarch64-none-linux-gnu and gcc-arm-aarch64-none-elf tool-chains? Latest 13 days ago by Jerome Decamps - 杜尚杰 2 replies 674 views
Not answered ARM GCC testsuite reports available? Started 14 days ago by ajcurtis84 0 replies 104 views
Answered GCC Embedded Toolchain port to Apple silicon ? Latest 16 days ago by dasnaghi 2 replies 1664 views
Suggested answer Compiler option to generate CPU log file Latest 16 days ago by Nazar 5 replies 918 views
Answered What is the advantage of uint8_t over char or bool? Latest 17 days ago by Andy Neil 3 replies 471 views
Answered How to migrate retarget.c from ARM Compiler 5 to ARM Compiler 6? Latest 17 days ago by coldspark 3 replies 467 views
Suggested answer I need blink my led in "distress signal" Urgent please Latest 20 days ago by Andy Neil 1 replies 411 views
Not answered STM32h7: USART doesn't work anymore after switching from compiler V5.06 to V6.14 Started 1 months ago by Andi 0 replies 253 views