Recently I decided that learning assembly would be a good idea, but right now, I’m really overwhelmed by all the material I have read about assembly in forums, here, tutos etc (Some of it is really old) so I would love to have some orientation about the assembly language, how to "compile" etc, I would also like it to be able to run on my CPU, so that i can practice, here are my CPU details from CPU-Z
AMD Athlon 64 3200+
Supported Instructions: MMX(+), 3DNow!(+), SSE(1, 2, 3), x86-64
Note: If possible I want this to be Windows oriented (Does this really matters?)
Thanks in advance.
I think that one of the best ways to start learning assembly language is to look at the output created by a compiler for a language you’re familiar with. For example, if you are familiar with Visual C++, then write some very simple code in C++ and use the integrated debugger to show the assembly language created by the compiler (make sure you’re compiling with optimisations off). Write some simple
forloops, assignment, arithmetic, etc and see what the created assembly language looks like.For learning, you don’t need to know anything about the instruction set extensions that you’ve listed in your question. All you need to be concerned about is x86 32-bit instructions. You can learn about 64-bit instructions, MMX, SSE, etc later once you’ve got the foundations in place.
Once you’ve got some basic understanding in place, you’ll need an assembler. A good, well-supported open source general purpose assembler is nasm.