Friday, May 6, 2011

Basic yet thorough assembly tutorial (linux)?

I want to learn some practical assembly language having just learned the basic concepts in class. Are there any decent books or tutorials (nasm, etc) that would be recommended?

From stackoverflow
  • PC Assembly Language is my favorite resource on assembly programming. It's modern, free, and covers a variety of topics. It uses NASM and the examples are available for Linux (among several other systems).

  • I agree that PC Assembly Language is very good. Other good ones using GAS are:

    Johnd : Professional Assembly Language is a great book, I recommend it, too
  • I recommend the official Intel manuals. You can request the hard copy on Intel's website.

    See http://en.wikipedia.org/wiki/X86_assembly_language#External_links

    * Intel 64 and IA-32 Software Developer Manuals
    * AMD64 Architecture Programmer's Manual Volume 1: Application Programming (PDF)
    * AMD64 Architecture Programmer's Manual Volume 2: System Programming (PDF)
    * AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions (PDF)
    * AMD64 Architecture Programmer's Manual Volume 4: 128-Bit Media Instructions (PDF)
    * AMD64 Architecture Programmer's Manual Volume 5: 64-Bit Media and x87 Floating-Point Instructions (PDF)
    

    Some resources from my personal friend, Google:

    • Function calling convention:

    http://unixwiz.net/techtips/win32-callconv-asm.html

    http://www.delorie.com/djgpp/doc/ug/asm/calling.html

    • Brief tutorial

    http://www.csn.ul.ie/~darkstar/assembler/

    • Using SSE

    http://www.neilkemp.us/v4/articles/sse_tutorial/sse_tutorial.html

  • A side question: what is the point in learning assembly just for the heck of it? The thing is, it seems that it would be hard to find a practical application for it, because if you need "low-levelness" you can just write it in pure ol' C.

    Please note, that I am not trying to label your question is useless, on the contrary, I absolutely love coding in assembly languages, even though I haven't done very much of it (yes, sadly it is a bit of a platonic love), - precisely because, it seems, I am unable to find something practical, that can be done in assembly only (after all, if it can be done in C, why use assembly, then?).

    P.S. I am terribly sorry for adding this as an answer, it was too long for a comment :(

  • http://en.wikibooks.org/wiki/X86_Assembly

  • "what is the point in learning assembly just for the heck of it? "

    Because you get to learn HOW the CPU works and get a better understanding of the system. I would say understanding assembler is in itself practical.

  • I would recommend the assembly tutorials page at http://pickatutorial.com

    I hope it helps.

0 comments:

Post a Comment