Practical x64 Assembly and C++
While at school and studying music, I taught myself computer programming. After teaching piano for a while and discovering that there was already a lot of people hoping to become the next Horowitz, I decided to go back to Uni and get a degree in programming. We brushed over C++ learning mostly how to program console apps for Linux. Mostly we looked at Java. My Uni taught me a lot but nothing to do with the way a CPU or its language works. I figured that if my Uni wasn't teaching ASM, there's a good chance other Unis weren't teaching it also. ASM isn't the most useful computer language but I believe it's the most important. Every other language is just an abstraction of it. I decided to put up some tutorials on YouTube to see if anybody was interested in this type of information. After the first few videos got some views from folks all around the world I felt asured that this was indeed useful information.
Mine mightn't be the most popular videos on YouTube (that's probably the one about the kid biting another kid's finger), they're far from being the most popular programming videos (that's probably New Boston's videos) but I'm very proud, it's been a massive undertaking.
These tutorials are intended for folks with a background in C++ who'd like to know how to use modern x64 Assembly language. From tutorial 44 onwards I started making slides, they are available for download below. They are in OpenOffice's Impress format. We've been all the way from "mov al, 3" to the craziness of the SIMD shuffle instructions. I have learned a lot from making these tutorials and I hope you have also.
This series is available on YouTube here.
Slides:
Tutorial 44: MMX Packing and Unpacking Tutorial 45: MMX Boolean and Comparison Instructions 1 Tutorial 46: MMX Comparisons 2 Segue to SSE Tutorial 47: Intro to SSE Tutorial 48: SSE Data Movement and Data Alignment Tutorial 49: SSE Arithmetic and Dynamic Data Tutorial 50: Data Conversion Instructions Tutorial 51: Shuffle Instructions Tutorial 52: Structures Tutorial 53: Classes Tutorial 54: Moving Sign Masks Tutorial 55: MXCSR Exception Fun Tutorial 56: SSE Comparisons that Set rFlags Tutorial 57: SSE Insertion and Extraction Instructions Tutorial 58: Intro to AVX
Other
Notepad++ Color Scheme: Download, unzip and copy to the install folder. This is a new color scheme for Notepad++, it features pastels on a black background which I find is easier to look at for long periods of time than the white backgrounds of most programming IDE's. There's a text file in the zip with instructions for installation.
Download color scheme
In tutorial 25 we looked at increasing the brightness of a photo with ASM and C++. In the tutorial we only looked at C++ and basic ASM. This PDF has a comparison of C++, ASM, MMX and SSE doing the same brightness adjusting algorithm. The source code for each version is included:
Supplemental PDF to Tute 25: C++ vs ASM vs MMX vs SSE
