What is the best way to learn x86 assembly on a Linux platform?

32,040

Solution 1

http://asm.sf.net has some material on architectures besides x86.

If you are interested in RISC architectures, you could run Linux on Qemu. Qemu emulates several RISC architectures like PowerPC, ARM and MIPS. You might be able to find a ready to use Qemu hard disk image here.

Another way to experiment with RISC architectures would be to use gdb's built-in simulator.

Solution 2

I found Assembly language step-by-step to be a very good resource. It has a section in the back thats aimed at Linux assembly too.

Solution 3

There are really two parts to learning assembly-level programming: the basic concepts, and then specific architectures. If you haven't had any exposure to asm programming, I strongly suggest you get the basics down first with a simple, small architecture, even tho' it likely is not directly applicable to any real hardware. If many folks are pointing to a particular resource like "The Art of...", take another look at it, use it to learn what an architecture is, how to use the basic tools (asm, debugger, disasm, etc).

Once those are out of the way, then you can start looking into more advanced instruction sets. The x86 architecture and instruction set are pretty convoluted and there are many obscure ways to twist your brain - learn something simple before you tackle that.

Solution 4

Probably nothing much better than The Art of Assembly Language Programming and the other resources at that web site.

Solution 5

Even though many people I know at school hated this book, I will link it anyway:

http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010

The main reason I used this book is because it uses x86 on Linux with the GNU assembler. That last point helped since I had to use that assembler in our school's lab, and if you aren't aware - the syntax is different from Intel syntax.

Also, I would just add that learning how high level languages are compiled into assembly language really helped me move along.

Share:
32,040
user87630
Author by

user87630

Updated on August 15, 2020

Comments

  • user87630
    user87630 almost 4 years

    I have no prior knowledge of assembly programming, and would like to learn how to code x86 assembly on a Linux platform. However, I'm having a hard time finding a good resource to teach myself with.

    The Art of Assembly book looks good, but it teaches HLA. I'm not interested in having to learn one way, then relearning it all over again. It also seems like RISC architectures have better resources for assembly, but unfortunately I do not have a RISC processor to learn with. Does anyone have any suggestions?