本书是为了让程序员了解计算机系统中的硬件和软件是如何工作的,以及它是如何影响程序的正确性和性能的,以此来提高自身的技能。如果能完全理解底层计算机系统以及它对应用程序的影响,将成为优秀的程序员。
从本书中你将会学习一些实践技巧。比如:
- 你将会学到如何避免由计算机表示数字的方式导致的奇怪的数字错误
- 你将学会怎样通过一些聪明的小窍门来优化你的C代码,以充分利用现代处理器和存储器系统的设计
- 你将了解到编译器是如何实现过程调用的,以及如何利用这些知识避免缓冲区溢出错误带来的安全漏洞,这些弱点会给网络和因特网软件带来了巨大的麻烦
- 你将学会如何识别和避免链接时那些令人讨厌的错误,它们困扰着普通的程序员
- 你将学会如何编写自己的Unix外壳、自己的动态存储分配包,甚至是自己的Web服务器
- 你会认识到并发带来的希望和陷阱,当单个芯片上集成了多个处理器核时,这个主题变得越来越重要
以上涉及到了很多方面,能够读透这本书,收获肯定不少,现在让我们开始吧。
每次逃不开的helloworld
1 #include <stdio.h>
2
3 int main()
4 {
5 printf(“hello,world\n”);
6 }
本书将从跟踪hello程序的生命周期开始,对计算机系统进行深入的学习。
- 1.1 信息就是位+上下文
- 1.2 程序被其他程序翻译成不同的格式
- 1.3 了解编译系统如何工作是大有益处
- 1.4 处理器读并解释存储在存储器中的指令
- 1.5 高速缓存至关重要
- 1.6 存储设备形成层次结构
- 1.7 操作系统管理硬件
- 1.8 系统之间利用网络通信
- 1.9 重要主题
- 1.10 小结