Originally this was a pet project of mine that was going to follow the progress of the popular game, Human Resource Machine. However, after working out the exercises, I noticed that there was a lot of redundancy because of the fundamental difference of architecture. From there I started trying to figure out how to structure this course.
Since the ARM architecture is a reduced instruction set computer (RISC), there are only about 30 operations that the main processor understands. What I ended up doing was listing them out, grouping them by function, and designing a better set of exercises that explored all of the operations.
Within the exercises, I wanted to discuss some general concepts and how they relate to the assembly world. I tried to visit some important concepts that apply to all programming such as negative numbers and using bit logic to save processing cycles.
I don’t intend for this to be an “authoritative guide to all things ARM assembly,” but rather a set of exercises and lessons that will allow you to start your journey getting closer to the bare metal. While much of this information could be used for embedded programming, there is a short section that is dedicated to interacting with a Linux operating system specfically.
Below are some things that I would like to tackle in the future, but need to find the time.
If you really enjoyed the content and would like to support me, the #1 way is to share the website with someone else that may enjoy it. If you really would like to go above and beyond, send me an email and let me know what you thought of this series. (kyle@kylebaldw.in) If you REALLY REALLY want to go above and beyond, you can send me a tip to let me know you would like to see more content like this in the future.