Lyngby: Technical University of Denmark, 2019. — 169 p.
The present manual explains how to
combine assembly code with a high level programming language and how to
optimize CPU-intensive code for speed by using assembly code. This manual is intended for
advanced assembly programmers and compiler makers. It is assumed that the reader has a
good understanding of assembly language and some
experience with assembly coding. Beginners are advised to seek information elsewhere and get some programming experience
before trying the optimization techniques described here. I can recommend the various introductions, tutorials, discussion forums and newsgroups on the Internet and the book "Introduction to 80x86 Assembly Language and Computer Architecture" by R.C. Detmer, 2nd. ed., 2006.
The present manual covers
all platforms that use the x86 and x86-64 instruction set. This instruction set is used by most microprocessors from Intel, AMD, and VIA. Operating systems that can use this instruction set include DOS, Windows, Linux, FreeBSD/Open BSD, and Intel-based Mac OS. The manual covers the
newest microprocessors and the
newest instruction sets (see manual
"The microarchitecture of Intel, AMD, and VIA CPUs: An optimization guide for assembly programmers and compiler makers").
Before you start.
The basics of assembly coding.
ABI standards.
Using intrinsic functions in C++.
Using inline assembly.
Using an assembler.
Making function libraries compatible with multiple compilers and platforms.
Optimizing for speed.
Optimizing for size.
Optimizing memory access.
Loops.
Vector programming.
Multithreading.
CPU dispatching.
Problematic Instructions.
Special topics.
Measuring performance.
Literature.
Copyright notice.
Last updated:
August 15, 2019.A4 format