Mastering ARM hardware architecture opens a world of programming for nearly all phones and tablets including the iPhone/iPad and most Android phones. It’s also the heart of many single board computers like the Raspberry Pi. Gain the skills required to dive into the fundamentals of the ARM hardware architecture with this book and start your own projects while you develop a working knowledge of assembly language for the ARM 64-bit processor.
You'll review assembly language programming for the ARM Processor in 64-bit mode and write programs for a number of single board computers, including the Nvidia Jetson Nano and the Raspberry Pi (running 64-bit Linux). The book also discusses how to target assembly language programs for Apple iPhones and iPads along with 64-Bit ARM based Android phones and tablets. It covers all the tools you require, the basics of the ARM hardware architecture, all the groups of ARM 64-Bit Assembly instructions, and how data is stored in the computer’s memory. In addition, interface apps to hardware such as the Raspberry Pi’s GPIO ports. The book covers code optimization, as well as how to inter-operate with C and Python code. Readers will develop enough background to use the official ARM reference documentation for their own projects.
With Programming with 64-Bit ARM Assembly Language as your guide you’ll study how to read, reverse engineer and hack machine code, then be able to apply these new skills to study code examples and take control of both your ARM devices’ hardware and software. What You'll LearnMake operating system calls from assembly language and include other software libraries in your projectsInterface apps to hardware devices such as the Raspberry Pi GPIO portsReverse engineer and hack codeUse the official ARM reference documentation for your own projectsWho This Book Is ForSoftware developers who have already learned to program in a higher-level language like Python, Java, C#, or even C and now wish to learn Assembly programming.
Stephen Smith is a software architect, located in Gibsons, BC, Canada. He's been developing software since high school, or way too many years to record. He is an expert in Artificial Intelligence and Assembly Language programming, earned his Advanced HAM Radio License, and enjoys mountain biking, hiking, and nature photography. He volunteers for Sunshine Coast Search and Rescue. He is the author of Raspberry Pi Assembly Language Programming: ARM Processor Coding, Programming with 64-Bit ARM Assembly Language: Single Board Computer Development for Raspberry Pi and Mobile Devices, and RP2040 Assembly Language Programming: ARM Cortex-M0+ on the Raspberry Pi Pico, all published by Apress. Also, he writes his popular technology blog, at smist08.wordpress.com.
I have written a lot of assembler in the distant past but aarch64 is new to me hence selecting this book to read. I mention this simply because having already got a good understanding of other cpu assembler instructions I am not coming at this cold.
For me this was a pretty good read. It covered an unexpectedly wide area of not just aarch64 but also the FPU, NEON, optimizing code, hacking, and a few other areas. Each chapter gives enough detail and flavour of the topic. Each area covered was not exhaustive which I think was good as it keeps the chapters short and if you are interested and want to know more a Google search is all you need.
The examples given are good and each chapter builds on what was taught in the previous chapters. The exercises were short enough that I attempted a few just to make sure I could follow the concepts given.
Overall for me this was a very good introduction. Recommended.
This is the best introduction to AARCH64v8 (ARM 64-bit) assembly that I have read. In addition to the basics the book covers FPU operations and parallel processing on the Neon co-processor. is so good that I am giving it to some of the more junior developers on my team for an in-depth understanding of this versatile 64-bit RISC processor to help optimized critical pieces of their code relative to the ISA and understand disassembly when debugging.
Now I am looking for a more advanced treatise using advanced functionality like page tables, MMUs, exception levels (EL0-EL3) for doing operating systems work using a similar effective format to Stephen Smith’s book.