| For C, absolutely K&R. For Asm, I concur with cperciva that the best way to go is to start at 8086 and work your way towards more modern assembly. For 8086 I highly recommend "The 80x86 IBM PC and Compatible Computers (Volumes I & II): Assembly Language, Design, and Interfacing". I learned from this book and thought it was very helpful. For more modern stuff I really enjoyed "Computer Systems: A Programmer's Perspective". It will be most beneficial after reading through K&R and being familiar with ASM. It focuses a lot on programming techniques, tips, and tricks so that compiled C/C++ code is turned into efficient assembly. Finally, if you'd like to build a whole system end to end, the Motorola 68HC11 microcontroller is a fun little piece of hardware to play around with. "MC68HC11: An Introduction to Software and Hardware Interfacing" is a good book for this purpose. Best wishes on your journey into the low-level programming world! PS. I'm biased. I have read and own all of the above mentioned books. Thanks for getting me to brush off the dust again ;) |
So pic, mips, etc first, then X86