#677 in Computers & technology books
Reddit mentions of Modern X86 Assembly Language Programming: 32-bit, 64-bit, SSE, and AVX
Sentiment score: 4
Reddit mentions: 5
We found 5 Reddit mentions of Modern X86 Assembly Language Programming: 32-bit, 64-bit, SSE, and AVX. Here are the top ones.
Buying options
View on Amazon.comor
- Apress
Features:
Specs:
Height | 9.02 Inches |
Length | 5.98 Inches |
Number of items | 1 |
Release date | November 2014 |
Weight | 21.92938120114 Pounds |
Width | 1.58 Inches |
If you want the manual, you can check this out. Amazon has some decent books on it as well. I personally like this one.
I definitely encourage you to explore the fascinating world of SIMD programming, and I completely understand this is a "hello world" SIMD program. That said, I caution against doing manual vectorization of loop like this because the optimizer^1 is better at it than you or I will ever be. For example, here you have assumed that the length of the input is a multiple of the vector size. If it's not, then you have to add postamble code around the loop to handle the extra elements. Alignment is even trickier- usually requiring a preamble, as well. You've also left performance on the table because you didn't unroll the loop. I've found that compilers (at least gcc and clang) tend to be more reluctant to unroll loops with intrinsics in them, so manual unrolling is pretty much necessary.
If you are really interested in assembly coding, I recommend Kusswurm's book even though all of the examples are in MASM^2. There are several YouTube channels that do assembly programming. One of my favorites is What's a Creel mostly because he's a funny guy.
***
[1] You are using the optimizer, aren't you?
[2] That's fine if you are on Windows, but I'm not.
Pick up any book on x86 assembler. You cannot program assembler without understanding the underlying system architecture, and as such most books on assembly language will include a deep dive on x86 architecture from the programmers perspective.
Assembly Language Step by Step by Jeff Duntemann: https://www.amazon.com/Assembly-Language-Step-Step-Programming/dp/0470497025
This is one of my favorites, the first assembly book I was able to make it all the way through. Once you do, I also highly recommend
Modern x86 Assembly Language Programming by Daniel Kusswurm: https://www.amazon.com/Modern-X86-Assembly-Language-Programming/dp/1484200659
A very thorough, yet surprisingly readable, dive into thw inner workings of thw advanced x86 feature sets, like MMX and AVX.
The Computer Systems: A Programmer's perspective is a very good book (the only book of which i have all 3 editions!). You can easily get the cheap South Asian editions and save money.
I have found the following two books to be very good;
Guide to Assembly Language: A concise introduction might be what you are looking for (but 32-bit only). It really is concise but very clear.
Searching the web will turn-up digital versions for all of them.
What do you know already? Assembly language is not a good place to start if you've never programmed before. Learn a language like Java or Python first, then learn C really, really well, then graduate to Assembly.
C in particular is the closest to Assembly language. Every other programming language abstracts things too much so you don't really know what's going on. Programming in C forces you to understand how the computer really works and it's a critical stepping stone to learning Assembly.
x86-64 assembly is not the easiest but it's the most widely used so you may as well learn on that.
A book like Modern X86 Assembly Language Programming should be fine, but it is NOT a book for beginners. It makes sense if you already know C but want to start doing more with Assembly language.
Reverse engineering only makes sense once you know how to actually write a lot of code yourself. You can't reverse engineer if you can't engineer, because it's all about getting your head inside the programmer and figuring out what they're trying to do with their code. You can't do that if you've never written code yourself.
Pentesting is different. A lot of that can be done without any Assembly programming, by understanding networking and common higher-level vulnerabilities.