Windows 64-bit Assembly Language Programming Quick Start: Intel X86-64, SSE, AVX
Robert Dunne
Paperback
(Gaul Communications, Aug. 1, 2018)
Windows® 64-bit Assembly Language Programming Quick Start is a complete tutorial using the free Community Edition of Microsoft® Visual Studio 17 to introduce the novice to the Intel® X86-64 architecture and the Windows X64 Calling Convention. With Microsoft® Visual Studio 17, assembly language programs can be built using either its Integrated Development Environment (IDE) or using its ML64 assembler directly in a traditional command line approach. Both techniques are presented in this book, and each has its own merits for gaining a deeper understanding of computer software and hardware. The assistance provided by Visual Studio’s interactive debugger is immense not only for developing real programs but also learning how the CPU instructions work. Programmers learn by example and develop their skills by examining and modifying working programs. Every sample program is complete, but leaves room for enhancements and experimentation encouraged by the questions at the end of each chapter. All are available for download through GitHub. The sample programs, ranging from five to over one hundred lines of code, are extensively documented in both flowcharts and comments. Over seventy illustrations are included to explain programming techniques as well as X86, SSE, and AVX instructions. CPU instructions are introduced as needed to achieve programming goals as the projects in each chapter progress to the next. This is not a book that has been modified or migrates from a 32-bit or 16-bit perspective, but starts right in with 64-bit programming and only refers to past approaches when necessary to explain seemingly unnatural conventions and names. Topics like binary and hexadecimal are introduced through programming examples as well as appearing in appendices. The examples in this book have been “classroom tested” with students having very little, if any, previous programming experience. The information is complete, allowing it to be used as an independent study. Learning computer hardware and software architectures through hands-on assembly language programming experience helps develop well-rounded programmers and computer engineers.