Keil Logo Arm Logo

ARM Compilation Tools

The ARM Compiler toolchain, previously known as ARM RealView Compilation tools include:

These development tools for the ARM family of microcontrollers allow you to write ARM applications in C or C++ that, once compiled, have the efficiency and speed of assembly language.

The ARM Compiler toolchain translates C/C++ source files into relocatable object modules which contain full symbolic information for debugging with the µVision Debugger or an in-circuit emulator. In addition to the object file, the compiler generates a listing file which may optionally include symbol table and cross-reference information.

Continuous Improvement

The ARM Compilation is industry recognized as the highest performance ARM technology-targeted compiler. Developed and tuned to deliver the highest code density, the ARM Compiler produces the smallest code size which leads to significant product cost savings. The compiler generates optimized code for the 32-bit ARM, the 16-bit Thumb, and the mixed 32/16-bit Thumb2 instruction sets while supporting ISO Standard C and C++.

The ARM Compiler has been consistently refined and improved both in code density and performance and with new features such as MicroLib.

ARM C/C++ Compiler (armcc)
Features and Benefits

  • ARM and Thumb® generation modes.
    You can mix ARM and Thumb code in the same source file. ARM mode allows for faster code operation making it ideal for interrupt handlers. Thumb mode provides the smallest code size.
  • Industry leading code size optimizations.
    Enables you achieve memory cost savings by generating the smallest compiled code size.
  • Industry leading code performance optimizations.
    Reduces power consumption by enabling increased throughput without clock speed increases.
  • Function Attributes for Hardware Support.
    The ARM C compiler provides function attributes that give you access to ARM hardware features. For example:
    • __irq allows you to create interrupt service routines in C.
    • __swi(id) allows you to invoke a software interrupt handler.
  • Embedded Assembler.
    You may insert assembler code into C function definitions. This capability is necessary for fast DSP and other signal-processing algorithms. The ARM compiler supports full program optimization even when embedded assembler is used.
  • Function In-lining.
    You may speed-up execution of frequently called functions by using function inlining. Inline functions are expanded inline without the overhead associated with function call, parameter passing, and return.
  • Parameter Passing in CPU Registers.
    The ARM Compiler automatically uses CPU registers to pass most function arguments. It can even pass and return small C structs in registers.
  • Reentrant Run-time Library.
    Most library routines are reentrant (refer to the library reference in the Compiler User's Guide) and may be invoked from the main program thread and from interrupts. There is no need to include special protection schemes for library calls.
  • IEEE-754 Compliant Single and Double Precision Floating-point.
    High accuracy floating-point support.


MicroLib is a highly-optimized library for ARM-based embedded applications written in C. When compared to the standard C library included with the ARM Compiler toolchain, MicroLib provides significant code size advantages required for many embedded systems.

MicroLib Library Size Comparison

ARM Macro Assembler (armasm)
Features and Benefits

  • Standard Macro Processor.
    The macro processor supports assembler macros you may use to repeat or automate assembler instruction sequences.
  • Conditional Assembler Controls.
    Conditional assembly allows you to control the assembler source code to create multiple target applications from the same source file(s).
  • Source Listing with Symbol Reference.
    The listing file includes an optional cross reference that provides detailed information about the assembled source file.

ARM Linker (armLink)
Features and Benefits

  • Detailed Listing File.
    The linker creates a comprehensive listing file that is easy to understand. It contains details like the memory configuration, input modules, memory map, symbol table, and cross reference.
  • Global Code Listing.
    The linker generates a global code listing file that shows symbolic disassembly of the generated code.
  • Static Stack Analysis.
    The linker calculates the stack requirements at link-time. This avoids run-time stack checking in the target application.

ARM Utilities
Features and Benefits

  • The ARM Archiver (Librarian), armar
    armar enables you to collect and maintain sets of ELF object files in standard format ar libraries. Saves time by creating reusable modules that can be passed to the linker in place of multiple ELF object files.
    With armar you are able to:
    • create new libraries
    • add files to a library
    • replace individual files in a library
    • replace all files in a library with specified files in a single operation
    • control the placement of files in a library
    • display information about a specified library (e.g. list all members in a library)
  • The ARM Elf Utility, fromelf
    fromelf, enables you to Process ARM ELF object and image files produced by the compiler, assembler, and linker.
    With fromelf you are able to:
    • Convert ELF images into other formats that can be used by ROM tools or directly loaded into memory.
    • Display information about the input file, for example, disassembly output or symbol listings, to either stdout or a text file.

Keil logo

Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

ARM’s Privacy Policy has been updated. By continuing to use our site, you consent to ARM’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.