How about starting out with understanding the machine?
Write Great Code: Understanding the Machine http://www.amazon.com/exec/obidos/tg/detail/-/1593270038/
product description:
If you've asked someone the secret to writing efficient, well-written software, the answer that you've probably gotten is "learn assembly language programming." By learning assembly language programming, you learn how the machine really operates and that knowledge will help you write better high-level language code. A dirty little secret assembly language programmers rarely admit to, however, is that what you really need to learn is machine organization, not assembly language programming. Write Great Code Vol I, the first in a series from assembly language expert Randall Hyde, dives right into machine organization without the extra overhead of learning assembly language programming at the same time. And since Write Great Code Vol I concentrates on the machine organization, not assembly language, the reader will learn in greater depth those subjects that are language-independent and of concern to a high level language programmer. Write Great Code Vol I will help programmers make wiser choices with respect to programming statements and data types when writing software, no matter which language they use.
except from a review:
This is a most interesting book. It's positioned kind of halfway between the book on a programming language and the data book for the CPU. It contains a lot of information that the computer science classes don't bother to include. On the whole it is rather machine independent (hard to do in today's world where the Pentium class machines are so prevalent), so if you are working on a Power PC or an ARM chip the material here would still have value.
-- Garrett Goebel IS Development Specialist
ScriptPro Direct: 913.403.5261 5828 Reeds Road Main: 913.384.1008 Mission, KS 66202 Fax: 913.384.2180 www.scriptpro.com garrett@scriptpro.com