I asked for more of this, and I got it. "There has been much interest in assembly lately (whether the real 6502, or the fictional DCPU-16; I even created my own virtual 8-bit CPU called i808 in 2007), but none of this attention focuses on the architecture that is most popular in today's computers. If you are reading this on a desktop, laptop, or server then your computer is most likely using x86-64 (or x86). x86-64 is the 64-bit superset of the 32-bit x86 architecture and any modern CPU from AMD or Intel supports it. This document will focus on the most used parts of x86-64."

These days I just don't use assembly anymore, there's no need for that on most applications as atleast GCC already produces better code than most people can do by hand.

With modern processors it is also very hard to write Assembly code by hand that is able to match what compilers can achieve due to architectures with out-of-order execution, branch prediction, multiple cache levels, NUMA.

Plus many of the compiler code generation algorithms which were not possible to use in the old days due to memory restrictions, are nowadays part of most compilers.

Unless you're writing Assembly for embedded systems, with simpler architectures, there are too many factors for code optimization that a human being is able to track.