xorl %eax, %eax

Book: Intel Software Developer’s Manual Vol. 1

with 17 comments

I have used this book countless times as a reference but a few weeks ago I decided that it’s time to read it from cover to cover. So, here is my review for this book.

intelvol1

Title: Intel® 64 and IA-32 Architectures Software Developer’s Manual
Volume: 1, Basic Architecture
[download link]

First of all, this book is written in a strict way that sometimes makes it really boring. However, it deals with concepts about processor design and features of Intel processors that you cannot easily find in other books. To clarify, there is nothing really advanced discussed in this volume. Nevertheless, if interrupts, exceptions and exception handling, gates like interrupt gates, trap gates, call gates and task gates, privilege levels, I/O ports or technologies such as MMX, SSE/SSE2/SSE3/SSE4, x87 FPU etc. are unknown words to you, then you should definitely read it. If you cannot answer questions like “why does the OS have to check for stack pointer alignment?“, or “why we are able to pass arguments in different code segments (far calls) through general purpose registers?” etc. you have to read it. From now on, I will suggesting this book as a supplementary resource to anyone studying x86 or x86_64 assembly programming. Anyone learning assembly can gain a better understanding of why things work like they do by utilizing this book. To conclude, no advanced concepts are being described but it has detailed information about basic architecture issues that you cannot easily find anywhere else.

Written by xorl

May 30, 2009 at 02:14

Posted in books

17 Responses

Subscribe to comments with RSS.

  1. plus you can get all the printed books for free mailed to you by Intel.

    I have 4 copies of each now, since they got updated over time

    also i don’t live in the US ;)

    hybriz

    May 30, 2009 at 07:43

  2. Indeed, and the above image is from 2007 hardcopy edition that I scanned because I didn’t like the 2009’s PDF cover page. :P

    xorl

    May 30, 2009 at 10:23

  3. AMD provides equivalent documentation (albeit not in printed form :-) ). Speaking with one of AMD’s engineers he described the volume as “same information, half the fat” :)

    thanasisk

    May 30, 2009 at 10:43

  4. I have that in my To-READ list too. Thanks for the information.

    xorl

    May 30, 2009 at 10:47

  5. Can you still get them mailed to you? I spent the last 10 minutes searching and couldn’t find it. I’ve done it before (a long time ago…), but they seem to have removed the option.

    Yoni

    May 30, 2009 at 12:34

  6. Hm.. it seems you’re right. There used to be a “order hardcopy” link. You can still try to email them and request the books based on their order number. You can get that number from their cover pages.

    xorl

    May 30, 2009 at 13:29

  7. @xorl – I hope this request doesn’t offend. I’d like to ask you, what the recommended (complete) documentation for learning C programming with is, in your opinion; The ISO/IEC 98:99 specification? I’d opt for the k&r, but afaic it’s not very complete in usage outside K&R/ANSI C. So, send a comment back! Or write a section concerning it, being as most of the vulnerabilities (thanks for documenting them!) are in C; I’d really like to learn it, and I view your opinion highly.

    Thanks

    ~bangbust

    bangbust

    May 30, 2009 at 17:39

  8. @bangbust: First of all I’m not an expert in C programming so I might be wrong.
    My opinion is to start from the classic K&R regardless of its ANSI approach since it is extremely well written and there are still numerous widely deployed applications written in ANSI C.
    After getting familiar with writing and reading C code, you can study the C99 specification, this is probably the most important resource. Another great book for C programming is “Expert C Programming” but it also depends on your goals. For example, if you’re interested in GNU applications then you should definitely read GNU C extensions’ documentation as well as GCC’s built-ins and its documentation in general. If you’re interested in Windows programming there are many excellent books and Microsoft offers great online resources such as MSDN, TechNet etc.
    If your concern is vulnerabilities in C programming, you can read the 6th chapter (which you can download for free) of taossa.com to get an idea. This is my favourite book regarding vulnerability discovery.
    I think that the ideal person to answer this question would be some C programming guru which you can easily find on IRC, specifically at ##c in FreeNode :)
    I don’t see how this request could be offending. Maybe because this comment has nothing to do with the post I believe. It doesn’t matter. I hope I answered to your request.

    xorl

    May 30, 2009 at 18:34

  9. As far as C programming goes, I recommend “C: A Reference Manual” by Harbison and Steele. It covers all of the C revisions and clearly illustrates places where they differ. As much as I respect K&R, I honestly feel that Harbison/Steele supersedes it at this point.

    Homer Sapien

    June 1, 2009 at 11:45

  10. Thanks xorl, you managed to answer my question pretty well ;) I already have the art of software security assessment (already even going through the 6th chapter) looking into reading the k&r soon as I can too.

    Thanks

    ~bangbust

    bangbust

    June 1, 2009 at 14:42

  11. @bangbust: As xorl pointed out: “Deep C Decrets: Expert C Programming” by Peter Van Der Linder. While an old book (it clearly shows its age nowadays) it contains some invaluable information and is written in a casual fun style. It even covers the basics of C++ so there you have value for money :-)

    thanasisk

    June 2, 2009 at 08:15

  12. Right now printed versions of Intel Manuals are out of stock and Intel said that they will not re-print them this year so we need to wait to 2010 I suppose.

    ad

    June 3, 2009 at 13:38

  13. ha! i phoned and mailed with intel coz i wanted a printed version of these docs… apperently they are out of stock and will not reprint for the rest of 2009… :(

    maybe i will have them printed from the pdf, reading a fat think like vol. 3 on screen i a pain in the ass.

    regards,

    smilingmofoe

    mofoe

    June 4, 2009 at 08:39

  14. Dear Intel® Customer,

    We have received your request for the Intel® 64 and IA-32 Architectures Software Developer’s Manuals.

    The Software Manuals are currently out of stock and will not be reprinted for the remainder of 2009. Please feel free to download the manuals at http://developer.intel.com/products/processor/manuals/index.htm.

    We apologize for the inconvenience.

    If you have any questions, please let me know.

    Thank you,

    Intel® Customer Service
    (800) 548-4725

    mofoe

    June 4, 2009 at 14:34

  15. Hello, would you happen to know if they still offer the hard copies of these manuals? I was hoping to get a hold of these manuals for quick references, and searching through the PDF files isn’t exactly what I’d call “quick”.

    Thank you,
    Brian

    Brian

    January 18, 2010 at 05:49

  16. @Brian I don’t know and haven’t attempted to contact them lately. You could sent them an email and ask them. :)

    xorl

    January 18, 2010 at 13:09

  17. Ah man, I don’t know if this I should laugh or cry.

    I checked the download pages for the manual before emailing, and now I’ve checked again a few days after emailing. I noticed a small change.

    “*Note: The Intel® 64 and IA-32 Architectures Software Developer’s Manuals are no longer available to order as hard copy.”

    I guess that’s just my luck.

    Thanks for answering, though. :)

    Brian

    January 25, 2010 at 18:31


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s