Enjoy fast, FREE delivery, exclusive deals and award-winning movies & TV shows with Prime
Try Prime
and start saving today with Fast, FREE Delivery
Amazon Prime includes:
Fast, FREE Delivery is available to Prime members. To join, select "Try Amazon Prime and start saving today with Fast, FREE Delivery" below the Add to Cart button.
Amazon Prime members enjoy:- Cardmembers earn 5% Back at Amazon.com with a Prime Credit Card.
- Unlimited Free Two-Day Delivery
- Instant streaming of thousands of movies and TV episodes with Prime Video
- A Kindle book to borrow for free each month - with no due dates
- Listen to over 2 million songs and hundreds of playlists
- Unlimited photo storage with anywhere access
Important: Your credit card will NOT be charged when you start your free trial or if you cancel during the trial period. If you're happy with Amazon Prime, do nothing. At the end of the free trial, your membership will automatically upgrade to a monthly membership.
Other Sellers on Amazon
+ $3.99 shipping
90% positive over last 12 months
Usually ships within 4 to 5 days.
+ $3.99 shipping
85% positive over last 12 months
& FREE Shipping
96% positive over last 12 months
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required. Learn more
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Modern X86 Assembly Language Programming: Covers x86 64-bit, AVX, AVX2, and AVX-512 2nd ed. Edition
| Price | New from | Used from |
- Kindle
$11.16 - $23.06 Read with Our Free App - Paperback
$24.278 Used from $26.27 20 New from $24.27
There is a newer edition of this item:
$69.99
This title has not yet been released.
Purchase options and add-ons
Gain the fundamentals of x86 64-bit assembly language programming and focus on
the updated aspects of the x86 instruction set that are most relevant to application
software development. This book covers topics including x86 64-bit programming and
Advanced Vector Extensions (AVX) programming.
The focus in this second edition is exclusively on 64-bit base programming architecture
and AVX programming. Modern X86 Assembly Language Programming’s structure and
sample code are designed to help you quickly understand x86 assembly language
programming and the computational capabilities of the x86 platform. After reading
and using this book, you’ll be able to code performance-enhancing functions andalgorithms using x86 64-bit assembly language and the AVX, AVX2 and AVX-512
instruction set extensions.
What You Will Learn
- Discover details of the x86 64-bit platform including its core architecture, data types,
- registers, memory addressing modes, and the basic instruction set
- Use the x86 64-bit instruction set to create performance-enhancing functions that
- are callable from a high-level language (C++)
- Employ x86 64-bit assembly language to efficiently manipulate common data types
- and programming constructs including integers, text strings, arrays, and structures
- Use the AVX instruction set to perform scalar floating-point arithmetic
- Exploit the AVX, AVX2, and AVX-512 instruction sets to significantly accelerate the
- performance of computationally-intense algorithms in problem domains such as
- image processing, computer graphics, mathematics, and statistics
- Apply various coding strategies and techniques to optimally exploit the x86 64-bit,
- AVX, AVX2, and AVX-512 instruction sets for maximum possible performance
Who This Book Is For
Software developers who want to learn how to write code using x86 64-bit assembly language. It’s also ideal for software developers who already have a basic understanding of x86 32-bit or 64-bit assembly language programming and are interested in learning how to exploit the SIMD capabilities of AVX, AVX2 and AVX-512.
- ISBN-101484240626
- ISBN-13978-1484240625
- Edition2nd ed.
- Publication dateDecember 7, 2018
- LanguageEnglish
- Dimensions7.01 x 1.42 x 10 inches
- Print length625 pages
Frequently bought together

What do customers buy after viewing this item?
- Most purchased | Highest ratedin this set of products
Blue Fox: Arm Assembly Internals and Reverse EngineeringPaperback
Editorial Reviews
From the Back Cover
Gain the fundamentals of x86 assembly language programming and focus on the updated aspects of the x86 instruction set that are most relevant to application software development. This book covers topics including the new Advanced Vector Extensions (AVX) 512 programming, from the latest x86 instructions set, and the MMX technology and instruction set.
The focus in this second edition is exclusively on 64-bit base programming architecture and AVX programming. Modern X86 Assembly Language Programming’s structure and sample code are designed to help you quickly understand x86 assembly language programming and the computational capabilities of the x86 platform. After reading and using this book, you’ll be able to code performance-enhancing functions and algorithms using x86 64-bit assembly language and the AVX, AVX2 and AVX-512 instruction set extensions.
You will:
- Discover details of the x86 64-bit platform including its core architecture, data types, registers, memory addressing modes, and the basic instruction set
- Use the x86 64-bit instruction set to create performance-enhancing functions that are callable from a high-level language (C++)
- Employ x86 64-bit assembly language to efficiently manipulate common data types and programming constructs including integers, text strings, arrays, and structures
- Use the AVX instruction set to perform scalar floating-point arithmetic
- Exploit the AVX, AVX2, and AVX-512 instruction sets to significantly accelerate the performance of computationally-intense algorithms in problem domains such as image processing, computer graphics, mathematics, and statistics
- Apply various coding strategies and techniques to optimally exploit the x86 64-bit, AVX, AVX2, and AVX-512 instruction sets for maximum possible performance
About the Author
Product details
- Publisher : Apress; 2nd ed. edition (December 7, 2018)
- Language : English
- Paperback : 625 pages
- ISBN-10 : 1484240626
- ISBN-13 : 978-1484240625
- Item Weight : 2.37 pounds
- Dimensions : 7.01 x 1.42 x 10 inches
- Best Sellers Rank: #207,141 in Books (See Top 100 in Books)
- #9 in Assembly Language Programming
- #16 in Software Programming Compilers
- #248 in Software Development (Books)
- Customer Reviews:
About the author

Discover more of the author’s books, see similar authors, read author blogs and more
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on Amazon-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
Top reviews from other countries
Position independent code is mentioned without explaining it.
LAHF/SAHF get mentioned without an explanation. Also the delightfully typo'd CUPID instruction appears in various places.
Tables also appear to have been brain dumped without thought for the end-user, such as in Table 1-10. This has no value as it stands.
Some stuff is over explain, some (rather too much) is under explained. Some just comes out of nowhere, such as zero in a register with XOR. Again, I know exactly why, but if this book is aimed at beginners then it must explain itself.
Also I would expect the registers could be given useful aliases by the assembler. I really got lost in some code because of this. Actual example
; Merge SPFP grayscale values into a single YMM register
vandps ymm4,ymm4,ymm15 ;mask out unneeded SPFP values
vandps ymm5,ymm5,ymm15
vandps ymm6,ymm6,ymm15
vandps ymm7,ymm7,ymm15
vpslldq ymm5,ymm5,4
vpslldq ymm6,ymm6,8
vpslldq ymm7,ymm7,12
vorps ymm0,ymm4,ymm5 ;merge values
vorps ymm1,ymm6,ymm7
vorps ymm2,ymm0,ymm1 ;ymm2 = 8 GS pixel values (SPFP)
That's frustrating and I presume unnecessary.
It's also really unhelpful to refer to 'volatile' without explaining this is not the same 'volatile' as used in C. Volatile here simply means you can trash them.
Also the code given is hugely verbose, quite unnecessarily so, and the description of what's going on (and bless the author, those descriptions are actually often quite reasonable) may be pages away from the code itself, so you have to flip back and forth between them.
As an example of code verbosity, a lot of it is taken up with output of results. Instead of using an old-fashioned printf() we get paragraphs of cout << ... Given that this is not a C++ tutorial, this
cout << "min_vals1: ";
cout << setw(4) << (int)min_vals1[0] << ' ';
cout << setw(4) << (int)min_vals1[1] << ' ';
cout << setw(4) << (int)min_vals1[2] << '\n';
cout << "min_vals2: ";
cout << setw(4) << (int)min_vals2[0] << ' ';
cout << setw(4) << (int)min_vals2[1] << ' ';
cout << setw(4) << (int)min_vals2[2] << "\n\n";
cout << "max_vals1: ";
cout << setw(4) << (int)max_vals1[0] << ' ';
cout << setw(4) << (int)max_vals1[1] << ' ';
cout << setw(4) << (int)max_vals1[2] << '\n';
cout << "max_vals2: ";
cout << setw(4) << (int)max_vals2[0] << ' ';
cout << setw(4) << (int)max_vals2[1] << ' ';
cout << setw(4) << (int)max_vals2[2] << "\n\n";
is not remotely helpful.
There are too many unhelpful brain dumps which don't recognise the beginners are going to get confused by them. Fortunately I'm not a beginner.
The book winds up by giving a very brief overview of AVX512, too little to be of use really.
As others have said, compiler intrinsics are not mentioned. While the book didn't actually promise them, they would have been very welcome to have.
The explanations aren't actually too bad, the code is questionable in its presentation, it's hugely verbose. I came rather close to sending it back but in the end decided to stick with it.
Not recommended.
Added later : I really, really wish for a rationale for a lot of things. There are instructions for what seem to be bitwise and'ing and or'ing of floats. Bitwise ops for floats has almost no rational interpretation I can find (something to do with NaNs perhaps?).
Also type punning is used freely to interface the C++ data structures to the SIMD ASM. As type punning is illegal in C++ as far as I know, some discussion on this is needed, but there's none.












