We all probably know that for ultimate control and maximum performance, you need assembly language. No matter how good your compiler is, you’ll almost always be able to do better by using your human smarts to map your problem onto a computer’s architecture. Programming in assembly for PCs though is a little tricky. A lot of information about PC assembly language dates back from when assembly was more common, but it also covers old modes that, while still available, aren’t the best answer for the latest processors. [Gpfault] has launched a series on 64-bit x86 assembly that tries to remedy that, especially if you are working under Windows.
So far there are three entries. The first covers setting up your toolchain and creating a simple program that does almost nothing. But it is a start.
The second entry talks more about FASM and how to use macros and other features to simplify your programming. In particular, he shows macros that can wrap details like PE tables and calling convention protocols to make things easier. You wind up with a working Hello World program.
The third entry starts work on a fantasy CPU emulator, QBX. This isn’t a bad idea since emulating a CPU forces you to use many of the host computer instructions and doesn’t require any special knowledge other than what you probably have if you are trying to learn assembly language, anyway.
Of course, if you are writing boot code, you need to know all that old-fashioned legacy stuff. We liked [Ben Jojo’s] tutorial for that. If Linux is more your jam, we have an introduction for that, too.
Header: AMD Ryzen x86-64 processor, Fritzchens Fritz / CC0