Modern X86 Assembly Language Programming_ 32-bit, 64-bit, SSE, and AVX [Kusswurm 2014-11-25].pdf

(9045 KB) Pobierz
www.it-ebooks.info
For your convenience Apress has placed some of the front
matter material after the index. Please use the Bookmarks
and Contents at a Glance links to access them.
www.it-ebooks.info
Contents at a Glance
About the Author �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
xix
About the Technical Reviewer �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
xxi
Acknowledgments �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
xxiii
Introduction �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½xxv
Chapter 1: X86-32 Core Architecture �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
1
Chapter 2: X86-32 Core Programming �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
27
Chapter 3: X87 Floating-Point Unit �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
87
Chapter 4: X87 FPU Programming �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
103
Chapter 5: MMX Technology �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
133
Chapter 6: MMX Technology Programming �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
147
Chapter 7: Streaming SIMD Extensions �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
179
Chapter 8: X86-SSE programming – Scalar Floating-Point �½�½�½�½�½�½�½�½
207
Chapter 9: X86-SSE Programming – Packed Floating-Point�½�½�½�½�½�½�½
237
Chapter 10: X86-SSE Programming – Packed Integers �½�½�½�½�½�½�½�½�½�½�½�½�½�½
273
Chapter 11: X86-SSE Programming – Text Strings �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
303
Chapter 12: Advanced Vector Extensions (AVX) �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
327
Chapter 13: X86-AVX Programming - Scalar Floating-Point �½�½�½�½�½�½
351
Chapter 14: X86-AVX Programming - Packed Floating-Point �½�½�½�½�½�½�½�½�½�½�½�½377
Chapter 15: X86-AVX Programming - Packed Integers �½�½�½�½�½�½�½�½�½�½�½�½�½�½
405
v
www.it-ebooks.info
Contents at a GlanCe
Chapter 16: X86-AVX Programming - New Instructions�½�½�½�½�½�½�½�½�½�½�½�½�½
439
Chapter 17: X86-64 Core Architecture �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
491
Chapter 18: X86-64 Core Programming �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
503
Chapter 19: X86-64 SIMD Architecture �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
557
Chapter 20: X86-64 SIMD Programming �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
563
Chapter 21: Advanced Topics and Optimization Techniques �½�½�½�½�½�½
623
Chapter 22: Advanced Topics Programming �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
637
Index �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
657
vi
www.it-ebooks.info
Introduction
Since the invention of the personal computer, software developers have used assembly
language to create innovative solutions for a wide variety of algorithmic challenges.
During the early days of the PC era, it was common practice to code large portions of
a program or complete applications using x86 assembly language. Even as the use of
high-level languages such as C, C++, and C# became more prevalent, many software
developers continued to employ assembly language to code performance-critical
sections of their programs. And while compilers have improved remarkably over the
years in terms of generating machine code that is both spatially and temporally efficient,
situations still exist where it makes sense for software developers to exploit the benefits of
assembly language programming.
The inclusion of single-instruction multiple-data (SIMD) architectures in modern
x86 processors provides another reason for the continued interest in assembly language
programming. A SIMD-capable processor includes computational resources that
facilitate concurrent calculations using multiple data values, which can significantly
improve the performance of applications that must deliver real-time responsiveness.
SIMD architectures are also well-suited for computationally-intense problem domains
such as image processing, audio and video encoding, computer-aided design, computer
graphics, and data mining. Unfortunately, many high-level languages and development
tools are unable to fully (or even partially) exploit the SIMD capabilities of a modern x86
processor. Assembly language, on the other hand, enables the software developer to take
full advantage of a processor’s entire computational resource suite.
Modern X86 Assembly Language Programming
Modern X86 Assembly Language Programming
is an edifying text on the subject of x86
assembly language programming. Its primary purpose is to teach you how to code
functions using x86 assembly language that can be invoked from a high-level language.
The book includes informative material that explains the internal architecture of an x86
processor as viewed from the perspective of an application program. It also contains
an abundance of sample code that is structured to help you quickly understand x86
assembly language programming and the computational resources of the x86 platform.
Major topics of the book include the following:
X86 32-bit core architecture, data types, internal registers,
memory addressing modes, and the basic instruction set
X87 core architecture, register stack, special purpose registers,
floating-point encodings, and instruction set
xxv
www.it-ebooks.info
Zgłoś jeśli naruszono regulamin