深入理解计算机系统-读书笔记(1)
首先这是一本神书,为了把它搞明白,就要花费很多心血进行学习。笔记是学习的重要方法和工具,所以开始记笔记。
这本书是以程序员的视角(perspective)去介绍计算机系统的。具体分为以下三个部分:
1. advanced language ->mid language(assemble)
1.1 通过预处理器生成.i文件,就是把include的头文件添加到source code中。具体怎么执行,还需要进一步学习。
1.2 通过编译器将.i文件转化成汇编文件(如.as文件)。
2. how to explain & execute mid language
2.1 通过汇编器生成可重定位目标.o文件。
2.2 通过链接器将多个.o文件加工为可执行目标文件.exe(win上面)。
3. how the part of computer system influence the efficiency of programm?
其中,很巧合的是,1和2都是分为两大步骤实现的。在这里,关于最前面的部分,以后每次都会看一点。而不是一次看完。
下面,开始学习第一章
CH1 Computer Systems:Programmer's Perpective
将会学习一下实用的技巧:
1. avoid digital mistake
2. optimize c program
3. know the compiler how to make process call
4. avoid safe bug, such as buffer overflow
1.1 信息= bits+context
source code save as byte array in text. Every byte-> integer,every integer->char.
只由ASCII字符组成的文件称为文本文件。也就是bytes可以通过ascii码来解码成有意义的内容。
相同的bytes,在不同的context下,表示的对象可能不同(例如int,float等等)。不同的context对应的是不同的解码方式。
1.2 程序被其他程序翻译成不同的格式
1.3 了解编译系统是如何工作的是非常有益处的
1. optimize code
2. 理解链接时的错误
3. 避免buffer overflow.
1.4 CPU读并解释存储在内存中的指令
将文件输入到命令行解释器(shell)中。为什么能够执行呢?这部分我以windows来理解,比如输入cmd.exe,执行命令行程序。是由于PATH中包含了该cmd.exe的目录,然后把目录和文件名拼接在一起,执行该程序。
- 点赞
- 收藏
- 关注作者
评论(0)