深入理解计算机系统-读书笔记(1)

举报
herosunly 发表于 2022/04/11 16:20:56 2022/04/11
【摘要】 ​ 首先这是一本神书,为了把它搞明白,就要花费很多心血进行学习。笔记是学习的重要方法和工具,所以开始记笔记。这本书是以程序员的视角(perspective)去介绍计算机系统的。具体分为以下三个部分:1. advanced language ->mid language(assemble)       1.1 通过预处理器生成.i文件,就是把include的头文件添加到source code中...

 首先这是一本神书,为了把它搞明白,就要花费很多心血进行学习。笔记是学习的重要方法和工具,所以开始记笔记。

这本书是以程序员的视角(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的目录,然后把目录和文件名拼接在一起,执行该程序。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。