Passive ARM Assembly Skills for Debugging, Optimization (and Hacking)
How does your C++ code actually run on Apple Silicon? Learn to read ARM assembly to debug, optimize, and understand the compiler's secrets.
#1about 2 minutes
Core concepts of ARM assembly language
Assembly language consists of instructions and operands like registers, immediate values, memory addresses, and labels.
#2about 2 minutes
Overview of ARM CPU architecture and memory
Modern ARM CPUs like the Apple M1 feature numerous 64-bit registers and a multi-level cache system to mitigate slow main memory access.
#3about 3 minutes
Implementing a Fibonacci sequence loop in assembly
A practical example demonstrates basic ARM instructions like MOV, ADD, SUB, CMP, and B.NE for arithmetic and control flow.
#4about 3 minutes
Comparing handwritten assembly to optimized compiler output
The compiler often generates more efficient code than a direct translation, such as converting an incrementing for-loop into a decrementing counter.
#5about 4 minutes
Managing local variables using the stack
The stack provides fast, temporary memory for local variables, managed by the stack pointer (SP) and accessed with store (STR) and load (LDR) instructions.
#6about 4 minutes
How function calls work in ARM assembly
Function calls use the Branch and Link (BL) instruction, which saves the return address in the link register (X30) and transfers control.
#7about 2 minutes
The ARM procedure call standard and ABI
The Application Binary Interface (ABI) defines strict rules for register usage, including which registers pass arguments, return values, and must be saved by the caller or callee.
#8about 4 minutes
Loading 64-bit pointers with 32-bit instructions
ARM uses a two-step process with ADRP and ADD instructions to load a full 64-bit address by first getting the memory page and then the offset within it.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
02:17 MIN
Solving common developer challenges with WebAssembly
WebAssembly Revolution: Elevating JavaScript's Reach and Performance
03:12 MIN
Addressing the complexity of modern software development on Arm
Unleashing the Full Potential of the Arm Architecture – Write Once, Deploy Anywhere
01:34 MIN
Profiling and optimizing workloads with Arm Performance Studio
Unleashing the Full Potential of the Arm Architecture – Write Once, Deploy Anywhere
02:48 MIN
How to contribute to the future of computing on Arm
Unleashing the Full Potential of the Arm Architecture – Write Once, Deploy Anywhere
03:58 MIN
Understanding WebAssembly through the history of abstraction
WebAssembly: The Next Frontier of Cloud Computing
02:15 MIN
Understanding Arm's significant commitment to software development
Unleashing the Full Potential of the Arm Architecture – Write Once, Deploy Anywhere
06:13 MIN
Navigating the complexity of performance debugging tools
WeAreDevelopers LIVE - Rendering in the Browser, The State of CSS and Accessibility and more
03:03 MIN
Why you should run AI workloads on the Arm CPU
Mobile AI Just Got Faster: What’s Coming for Developers on Arm
All the videos of Halfstack London 2024!Last month was Halfstack London, a conference about the web, JavaScript and half a dozen other things. We were there to deliver a talk, but also to record all the sessions and we're happy to share them with you. It took a bit as we had to wait for th...
Chris Heilmann
Dev Digest 138 - Are you secure about this?Hello there! This is the 2nd "out of the can" edition of 3 as I am on vacation in Greece eating lovely things on the beach. So, fewer news, but lots of great resources. Many around the topic of security. Enjoy! News and ArticlesGoogle Pixel phones t...
Dev Digest 113 - Debugging above the cloudHello there and welcome to Dev Digest 113! This time, we got an old friend in the sky back, jQuery asks us to upgrade and AI is eating the web. Also, are you sure the LLM you use is secure against code injection?News and ArticlesGood news everyone! N...