views:

135

answers:

5

Hello all,
I want to learn all advanced details of low-level programming so i want to be able to

  • Learn advanced c/c++
  • Optimize my code with and without inline assembly
  • Understand the internals of an exe, dll, thread, process
  • Effeciently make use of technologies like SSE, 3DNow, MMX
  • Debug&disassemble executables/libraries and understand what's going on inside
  • The differences/features of different cpus/platforms like x86, MIPS, ARM, PowerPC
  • My first target is a x86 Windows based system. After that, comes linux based platforms. And embedded systems follow. Any books, web sites, tutorials, forums, comunities that give me what I'm looking for DIRECTLY is fine.
    Thanks..

    +1  A: 

    What you are asking for cannot be found in a single book. Much of what you have mentioned is best found in User Manuals or Functional Specifications for various processors. I recommend starting with an understanding of the core x86 arch and working up from there. One of the old Intel 386 or 486 manuals might be a good start.

    I know of no websites for this type of info.

    Art
    A: 

    that is a bit too much, that you want to learn. :)

    i would suggest starting with basic ARM v4 core architecture. it is simple enough to understand. then move on to 8086, then build up to later versions of ARM and x86. ARM is of the RISC type. and x86 of the CISC type. you can never learn all of the processors. (like you wont be ever able to learn all the programming languages) but having a knowledge of 1 or 2 can will enable to grasp any other you would come across. there is nothing much Object oriented about low level programming. so it doesnt matter if you use c++ or c. get a full system simulator like gxemul or qemu. try to execute a hello world assembly program - (without using the processor runtime libraries, - you want it hard, right?) others might be able to guide you with respect to SSE, MMX etc.

    checkout infocenter.arm.com for the ARM assembly language and architecture specifications.

    alvin
    +1  A: 

    A few recommendations from among my personal favourites to get you started:

    • “Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)” -- Scott Meyers

    • “Inside the Machine” -- John Stokes

    • “Hacker’s Delight” -- Henry S. Warren

    • “The Software Optimization Cookbook” -- Richard Gerber

    • “Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2A: Instruction Set Reference, A-M” (253666-021)

    • “Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2B: Instruction Set Reference, N-Z” (253667-021)

    Paul R
    A: 

    I've always found Computer Systems: A Programmer's Perspective (http://www.amazon.com/Computer-Systems-Programmers-Randal-Bryant/dp/013034074X) to be a very good book. It's got a large amount of information about Computer Architecture, and it taught me about memory management, compilation and linking (as well as how to debug linking errors), optimization, relocatable object code, and some lower-level architecture items like how to go about studying computer science from a low-level (e.g. what the internals of the processor are like). There are a lot of good exercises, ranging from optimization examples to implementing buffer overflows. It discusses how to write inline assembly code (and make it work). There's even a section on writing code for a fictional (Y86) processor.

    One caveat, though, is that it tends to focus to heavily on the Intel processor line (in my opinion). If you want something that's a bit more along the lines of working with say the ARM line, then you'll probably want to take the recommendations from others above.

    jwir3
    +1  A: 

    Maybe it's time for you to get an account on http://my.safaribooksonline.com/, unplug the phone for a couple of weeks, load the refrigerator up with Jolt and Funyuns, say goodbye to your family and friends, and then read as many books as you can. They have a pretty substantial library on there that covers most of the topics that you're looking for.

    Kyle Derkacz