Modern X86 Assembly Language Programming

By Daniel Kusswurm

Modern X86 Assembly Language Programming Cover Image

Modern X86 Assembly Language Programming shows the fundamentals of x86 assembly language programming. It focuses on the aspects of the x86 instruction set that are most relevant to application software development. The book's structure and sample code are designed to help the reader quickly understand x86 assembly language programming and the computational capabilities of the x86 platform.

Full Description

  • ISBN13: 978-1-484200-65-0
  • 500 Pages
  • User Level: Beginner to Intermediate
  • Publishing December 23, 2014, but available now as part of the Alpha Program
  • Available eBook Formats: PDF
  • Print Book Price: $49.99
  • eBook Price: $0.00

Related Titles

Full Description

Modern X86 Assembly Language Programming shows the fundamentals of x86 assembly language programming. It focuses on the aspects of the x86 instruction set that are most relevant to application software development. The book's structure and sample code are designed to help the reader quickly understand x86 assembly language programming and the computational capabilities of the x86 platform. Major topics of the book include the following:

  • 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

    MMX technology and instruction set

  • Streaming SIMD extensions (SSE) and Advanced Vector Extensions (AVX) including internal registers, packed integer arithmetic, packed and scalar floating-point arithmetic, and associated instruction sets
  • 64-bit core architecture, data types, internal registers, memory addressing modes, and the basic instruction set
  • 64-bit extensions to SSE and AVX technologies
  • X86 assembly language optimization strategies and techniques

What you’ll learn

  • How to use the x86’s 32-bit and 64-bit instruction sets to create performance-enhancing functions that are callable from a high-level language (C++)
  • How to use x86 assembly language to efficiently manipulate common programming constructs including integers, floating-point values, text strings, arrays, and structures
  • How to use the SSE and AVX extensions to significantly accelerate the performance of computationally-intensive algorithms and subroutines in problem domains such as image processing, computer graphics, mathematics, and statistics
  • How to use various coding strategies and techniques to optimally exploit the x86’s microarchitecture for maximum possible performance

Who this book is for

    The target audience for Modern X86 Assembly Language Programming is software developers including:

    • Software developers who are creating application programs for Windows-based platforms and want to learn how to write performance-enhancing algorithms and functions using x86 assembly language
    • Software developers who are creating application programs for non-Windows environments and want to learn x86 assembly language programming
    • Software developers who have a basic understanding of x86 assembly language programming and want to learn how to use SSE and AVX
    • Software developers and computer science students who want or need to gain a better understanding of the x86 platform including its internal architecture and instruction sets
    The primary audience for the book is Windows software developers since the sample code will be created using Visual C++ and Microsoft Macro Assembler. Developers targeting non- Windows platforms, however, also can learn from the book since most of the content will be organized and communicated independent of any specific operating system. In order to understand the book’s subject material, a background that includes some programming experience using C or C++ will be helpful. Experience with or knowledge of a particular Windows API will not be a prerequisite to benefit from the book.

    Table of Contents

    Table of Contents

    Updated 8/6/2014 by scw

    -------------------------------------

    Preface/foreword

    Ch1: X86-32 Core Architecture

    Ch2: X86-32 Core Architecture Programming

    Ch3: X87 Floating Point Unit

    Ch4: X87 Floating Point Unit Programming

    Ch5: MMX Technology

    Ch6: MMX Programming

    Ch7: Streaming SIMD Extensions (SSE)

    Ch8: X86-SSE Programming – Scalar Floating-Point

    Ch9: X86-SSE Programming – Packed Floating-Point

    Ch10: X86-SSE Programming – Packed Integers

    Ch11: X86-SSE Programming – Text Strings

    Ch12: Advanced Vector Extensions (AVX)

    Ch13: X86-AVX Programming – Scalar Floating-Point

    Ch14: X86-AVX Programming – Packed Floating-Point

    Ch15: X86-AVX Programming – Packed Integers

    Ch16: X86-AVX Programming – New Instructions

    Ch17: X86-64 Core Architecture

    Ch18: X86-64 Core Architecture Programming

    Ch19: X86-64 SIMD Architecture

    Ch20: X86-64 SIMD Programming

    Ch21: Advanced Topics

    Ch22: Advanced Topics Programming

    AppA: Sample Code Tutorials

    AppB: x86-32 and x86-64 calling conventions

    AppC: Additional Resources

    Errata

    Please Login to submit errata.

    No errata are currently published