Intro to ARM Assembly
Learn to read, write, and debug assembly code for the ARM EABI used by smart phones and mobile devices.
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.