At last I make my return to the 3D game engine project, after taking a short break due to a bout of the common cold. And I didn't make getting back into the groove of working on this project easy on myself, as I'm starting a new topic in Zerbst and Duvel's book: well-optimized 3D calculus! Now's the chance for my physics background to come in handy!
Well, I should add a qualifier to that topic. I was happy to discover that the authors of the book begin their discussion of 3D math by providing a primer on using assembly languages to optimize for specific CPU architectures. Naturally, this is quite a deep topic that they could spend the entire book explaining, but even their light overview was a challenging, but appreciated learning experience. I've only once delved this close to machine code, and because that prior experience was for a class that I (at the time) didn't see as being terribly useful, I didn't retain much of it.
So now I've returned to the domain of Intel and AMD to learn about assembler programming all over again. And here I find myself most keenly aware that my guiding resource was written ten years in the past. The book gives an overview of SIMD technologies like SSE, and while some basic Googling can give me an idea of what kinds of CPUs these tools were created for, that doesn't help with applying the book's guidance to more current hardware. No discussion is given to multi-core processors or x64 architecture. I'm not sure yet what kinds of assembler programming will be necessary for optimizing 3D math, but I suspect that aside from upgrading the renderer I've built to use DirectX 10 and 11, probably the best thing I could do to make improvements after I finish the engine is to go back and learn how to take advantage of these modern hardware staples.
For now, I will have to stick to processing the basics of assembler programming. I can return to more advanced topics once my conceptual and experiential foundation is more firm.
Progress So Far: Learned the basics of assembler programming.