Learning x64 assembly language
February 28, 2021
Of late I’ve been diving ever deeper and deeper into low-level programming. My attention was first drawn to assembly language programming when I started to get into development for retro systems, particularly the Commodore 64. I dabbled with 6502 assembly on and off for years before really making a commitment to learn how things worked just this year, and in doing so I ended up actually releasing a simple game for the machine.
Eventually though my fascination has led me to study modern x86/x64 assembly, something I had in the past been told had no relevance today and was pointless to learn. I don’t think my still very limited experience qualifies me to speak authoritatively on the subject, but I do know that, for me, programming in assembly language is extraorginarily fun and educational. For a nerd like me a key element to the enjoyment is feeling like I am more able to understand just how these incredible, wonderful, monumentally complex machines work. At the very least, get just that little bit closer, is what I mean. I’m under no illusions that I am anywhere close to fully understanding how modern computers work, as complicated as they are.
Well the long story short is that I’ve spent a good amount of time lately trying to learn modern x64 assembly language. In doing so I’ve managed to write several little applications, one of them is pictured below (and that you can download here, note is for 64-bit Windows systems only).
Resources and further reading
The first resource I found particularly useful was a YouTube channel called Creel where the friendly Chris Rose (what is a Creel?) instructs you in a down-to-earth, beginner friendly manner in the arts of assembly language programming. The same author also wrote this free book on the topic.