CourseExample

Intro to ARM Assembly

Learn to read, write, and debug assembly code for the ARM EABI used by smart phones and mobile devices.

3-Day Course
Relevant Today
Android & Mobile Focus
Hands-On Debugging
Course Overview
Daily Agenda

Course Description

In the Introduction to ARM Assembly course, students will learn to read, write, and debug assembly code for the ARM EABI used by smart phones and mobile devices. Topics include registers, the ARM and Thumb instruction sets, literal pools, the stack, ARM calling conventions, cross compilation, remote debugging with GDB, and GNU inline assembly. Workstations, Android devices, and all required technical documentation will be provided.

Prerequisites

  • Students should have C programming experience.
  • Prior experience with another assembly language is helpful, but not required.

Program Highlights

Relevant Today

Gain skills for a platform used in 99% of the world's smartphones and tablets today, with 60% of the world's population using an ARM device daily.

Inclusive Approach

Get exposure to all major platform components, including major revisions, the Application Binary Interface (ABI), and ARM-specific hardware modules.

Core Topics

Covering ARM & Thumb instruction sets, calling conventions, cross compilation, remote debugging with GDB, inline assembly, and more.

What You Will Learn

  • Setup a complete toolchain for building ARM binaries and debugging applications on an Android device using GDB.
  • Understand ARM memory addressing, the stack and its conventions, and the details of calling conventions on ARM.
  • Learn about syscalls and how to switch between ARM and Thumb instruction set modes.
  • Use inline assembly in your code and understand the basics of the Neon coprocessor for advanced tasks.

Daily Agenda

  • Day 1: Toolchain Setup and Basic Instructions

    Setup a toolchain for building ARM binaries, learn basic adb commands, and configure gdb for debugging on an Android device. Covers basic instructions like mov, add, multiply, and shift.

    Day 2: Memory, the Stack, and Calling Conventions

    Learn about memory addressing, layout, and the push/pop instructions. This day covers the stack, its conventions, and the standards for calling conventions on the ARM architecture.

    Day 3: Syscalls, Modes, and Inline Assembly

    Learn about syscalls, changing modes between ARM and Thumb, using inline assembly in your code, and an introduction to the Neon coprocessor, followed by the final exam.