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.

ARM Developer Resources

Looking for
Technical Information?

Developer Resources

Continuous Improvement

The ARM Compilation Tools are recognized as industry-leading ARM technology-targeted compilers. Developed and tuned to deliver the highest code density, the ARM Compiler produces the small 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 to 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.


Improved in MDK-ARM v4.1x

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.

The primary differences between MicroLib and the standard C library are:

  • MicroLib is designed for deeply embedded applications.
  • MicroLib is optimized to use less code and data memory than the ARM standard library.
  • MicroLib has been designed to work without an operating system, however this does not prevent it being used together with any OS or RTOS such as Keil RTX.
  • MicroLib contains no file I/O or wide character support.
  • As MicroLib has been optimized to minimize code size, some functions will execute more slowly than the standard C library routines available in the ARM compilation tools.
  • Both MicroLib and the ARM Standard Library are included in the Keil MDK-ARM.
  • See Differences from the default C library for more detailed information

MicroLib Selection in µVision3

To use MicroLib in your embedded application, select the MicroLib check box in µVision and compile your application. µVision links your program with MicroLib and reduces your program size quickly and easily.

Note: MicroLib is included in MDK-ARM v3.1 and higher.

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, enables you to collect and maintain sets of ELF object files in standard format or 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, 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.


We use cookies to give you the best experience on our website. By continuing to use our site you consent to our cookies.

Change Settings

Find out more about the cookies we set