SoC
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
  • Arm Cortex M3
  • Contact
Reading: What programming language is used for ARM?
SUBSCRIBE
SoCSoC
Font ResizerAa
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
Search
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
Have an existing account? Sign In
Follow US
  • Looking for Something?
  • Privacy Policy
  • About Us
  • Sitemap
  • Contact Us
© S-O-C.ORG, All Rights Reserved.
Arm

What programming language is used for ARM?

Graham Kruk
Last updated: September 8, 2023 9:38 am
Graham Kruk 7 Min Read
Share
SHARE

ARM processors support several different programming languages and environments. The most common languages and environments used for programming ARM processors include:

Contents
C and C++Assembly LanguageJavaC#PythonSwiftRustDevelopment EnvironmentsOperating SystemsSummary

C and C++

The C and C++ programming languages are the most commonly used languages for programming ARM processors. They provide low-level control over memory and hardware, which makes them well-suited for embedded systems programming. C and C++ code compiled for ARM processors will result in very efficient code.

All ARM processors support C and C++. ARM provides C and C++ compilers as part of their toolchain for programming their chips. Popular C/C++ compilers used with ARM include:

  • ARM Compiler
  • GCC (GNU Compiler Collection)
  • LLVM/Clang

The ARM C and C++ compilers produce code targeted specifically for ARM processors. GCC and LLVM are open source compilers that support many chip architectures including ARM.

Assembly Language

Assembly language is also commonly used for programming ARM processors. Assembly code allows programmers to directly access and utilize the instruction set architecture of the ARM processor.

Assembly programming provides ultimate control over the processor at a low level. It can be used to create extremely optimized code, such as for time-critical operations. It is also useful for accessing processor features that might not be available through a higher level language.

The ARM instruction set has several versions such as ARMv6, ARMv7, etc. So the exact assembly syntax used will depend on the specific ARM processor variant.

Java

The Java programming language is popular on embedded ARM devices such as smartphones and tablets. Java provides portability, security and high performance which makes it well-suited for the mobile space.

There are several ways to run Java code on ARM devices:

  • Using a JVM (Java Virtual Machine) which interprets the Java bytecode at runtime.
  • AOT (Ahead-Of-Time) compilation of Java bytecode to native machine code.
  • Compiling Java source to native machine code.

Oracle and other vendors provide Java JVMs optimized for ARM. And there are Java compilers like GCJ that can compile Java to native ARM code.

C#

The C# programming language can be used to create applications for ARM devices running Windows or Linux. C# combines the high productivity of managed languages like Java with the power of native C/C++.

Mono is a popular cross-platform implementation of .NET that supports ARM processors. The Mono runtime allows compiling C# code to native ARM machine code. So C# programs can obtain native performance on ARM.

Python

Python is a popular high level programming language used on embedded ARM devices like the Raspberry Pi. It provides good productivity for scripting applications due to its simple syntax and large set of libraries.

Python code is usually interpreted at runtime rather than compiled to native code. But there are compilers like Cython that can compile Python to native machine code for increased performance.

Swift

Swift is a newer programming language developed by Apple for iOS and macOS applications. But open source Swift has also been ported to Linux and ARM processors.

Swift combines modern language features with good performance. Compiled Swift code for ARM can approach the performance of C/C++. So Swift is growing in popularity for embedded programming.

Rust

Rust is another newer systems programming language that has great potential for embedded devices. It guarantees memory safety without garbage collection which makes it suitable for ARM and IoT.

Rust has been demonstrated running on ARM Cortex-M microcontrollers and outperforms C. As the language matures, Rust could become more widely adopted in the ARM ecosystem.

Development Environments

There are various development environments and toolchains used for programming ARM devices:

  • ARM Development Studio – ARM’s official IDE and toolchain for C/C++ development
  • GNU toolchain – GCC, GDB debugger, etc.
  • LLVM/Clang toolchain – Clang compiler, lldb debugger
  • Visual Studio – Microsoft IDE with ARM support
  • Eclipse – Open source IDE with ARM plugins
  • Android Studio – Google’s IDE tailored for Android apps

These environments allow compiling, debugging and deploying applications for ARM devices. They support programming in languages like C, C++, Java and more. The choice depends on developer preference and target platform.

Operating Systems

ARM processors support many operating systems. Popular operating systems used with ARM include:

  • Android – For mobile devices
  • iOS – Apple’s mobile OS
  • Linux – Most widely used OS across ARM devices
  • Windows – Mainly newer Win 10 on ARM devices
  • FreeRTOS – Popular real time OS for microcontrollers

The OS provides core libraries, device drivers, system calls and other interfaces for ARM applications to use. The OS may also include a high level language runtime like Java or .NET for easier application development.

Summary

In summary, ARM processors are highly flexible and support many programming languages. C and C++ are the most commonly used for their speed and low-level control. But managed languages like Java and C# are popular where portability is important, such as mobile apps. And new languages like Rust have potential for better memory safety in ARM embedded systems. The choice of language depends on the specific application requirements.

ARM provides robust toolchains for compiling and debugging applications in these languages. And ARM processors support almost any modern OS from mobile operating systems like Android to real-time operating systems like FreeRTOS. This wide software support is key to the popularity of ARM across virtually all segments of embedded and mobile devices.

Newsletter Form (#3)

More ARM insights right in your inbox

 


Share This Article
Facebook Twitter Email Copy Link Print
Previous Article What instruction set do Cortex-M processors use?
Next Article Is the ARM Cortex-M a microprocessor or a microcontroller?
Leave a comment Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

2k Followers Like
3k Followers Follow
10.1k Followers Pin
- Sponsored-
Ad image

You Might Also Like

NULL Pointer Protection with ARM Cortex-M MPU with Examples

NULL pointer dereferences are a common source of bugs and…

5 Min Read

Stack Limit Checking in Arm Cortex-M for Stack Overflow Detection

Stack overflows are a common source of vulnerabilities in embedded…

7 Min Read

ARM Cortex M vs R: A Detailed Comparison

The ARM Cortex series of microcontroller units (MCUs) and microprocessors…

6 Min Read

Qualcomm customizations of Cortex-A76 in Snapdragon SOCs

Qualcomm has made several customizations to the ARM Cortex-A76 CPU…

8 Min Read
SoCSoC
  • Looking for Something?
  • Privacy Policy
  • About Us
  • Sitemap
  • Contact Us
Welcome Back!

Sign in to your account