This book is a very unusual one because it explains computer architecture from the standpoint of the C/C++ programmer. That is, its object is to allow the programmer to understand how the architecture of the computer on which he/she programs effects the performance and execution of these programs. Things such as virtual memory, parallelization, optimization, and even logical and mathematical operations are effected by the architecture of the computer itself. For example - big endian versus little endian machines. You'd believe you wouldn't have to think about how your computer is organized at this level - that is one of the reasons you program in a high level language anyways, right? Wrong. If you have data stored in big endian format that is mathematically operated upon in a little endian machine, or vice versa, you will wind up with something quite different from what you intended. That's the kind of information this book gets into.
Some have labeled this book as "hard". It really is not hard as much as it is densely packed with knowledge. You need to take each concept within each chapter and think about it before you go on to the next. If you do this you'll not only get much out of it during your initial read, you'll have a valuable reference for some time to come.
To get the most of this book you should already be a capable C/C++ programmer and you should also know the building blocks of a computer. The book goes over these things very quickly but it really is not enough if you start out knowing nothing about these subjects. Highly recommended.
The following is the proposed table of contents for the second edition: 1 A Tour of Computer Systems 1
I Program Structure and Execution 25 2 Representing and Manipulating Information 29 3 Machine-Level Representation of Programs 145 4 Processor Architecture 317 5 Optimizing Program Performance 449 6 The Memory Hierarchy 531
II Running Programs on a System 619 7 Linking 623 8 Exceptional Control Flow 667 9 Virtual Memory 741
III Interaction and Communication Between Programs 819 10 System-Level I/O 823 11 Network Programming 847 12 Concurrent Programming 893
A Error Handling 957 A.1 Error Handling in Unix Systems 957 A.2 Error-Handling Wrappers 959
Ссылка удалена правообладателем ---- The book removed at the request of the copyright holder.