计算机系统基础学习小笔记(1)

第一周的后半部分主要是讲了不同级别的语言,以及程序开发的过程,并且交代了课程主要内容。
计算机系统基础学习小笔记(1)
显然没人想这样玩儿电脑(跑)
计算机系统基础学习小笔记(1)
汇编语言对机器语言的序列提供了助记符和标号,并且一一对应,从而让人们从0101001的海洋中解放出来……但是直接用汇编语言写过度复杂的算法,实现非常复杂的数据结构,是一件非常反人类的事情。
(但是我看这个课程还是主要来看汇编的wwwww)
计算机系统基础学习小笔记(1)
计算机系统基础学习小笔记(1)
高级语言对人来说就友好多了,使用高级语言,我们可以轻松实现高度复杂的算法和数据结构。逻辑结构总共三种,最基础的是顺序结构,然后是选择和循环结构,这些都可以在机器层面用指令跳转等方式实现。
高级语言的执行有两种,一种是编译执行,还有一种是解释执行,编译执行的语言是将代码直接编译成可以由机器进行操作的二进制文件,而解释执行的语言则是将代码进行分析之后,在解释器环境中运行,这里面就有很多很多种类了,比如编译成二进制虚拟机可执行文件,在虚拟机中跑,还有的语言是生成抽象语法树,直接在语法树中运行……
计算机系统基础学习小笔记(1)
这张图非常直观的给出了C语言编译器生成可执行文件的全过程。
先由预处理器,将源程序.c文件进行预处理(进行宏替换,预处理代码选择等操作),输出.i文件,.i文件本身也是源程序,只不过已经经过预处理,里面很多内容是经过替换和选择之后生成的,接着是编译器,将.i文件进行词法、语法、语义分析,转换为汇编代码.s文件,接着用汇编器,将汇编代码转换为二进制.o文件,由于C语言很多库函数本身的实现已经有二进制代码段存在(比如图中的printf.o),这时,需要链接器,将这些已经有的可调用库函数二进制代码段和生成的.o文件链接起来,这样,可执行目标程序就生成完毕了。
计算机系统基础学习小笔记(1)
这是hello world程序的执行过程。shell命令行中输入./hello,./代表当前目录,这样可以执行hello程序。此时,键盘输入的./hello字符串被传送到CPU,再由CPU传送到主存储器,在操作系统的调用操作下,找到磁盘中存储的hello文件,并将文件和其中的数据加载到主存储器中,由CPU读取执行后,将输出的字符串通过I/O总线输出给显示器,最终你就能在显示器上看到输出的字符串了。
计算机系统基础学习小笔记(1)
高级语言通过编译程序转换成汇编语言,再通过汇编程序变为机器语言目标程序,而目标程序中的指令会被指令译码器识别并转换为控制信号,从而自动运行。

开发和运行程序的支撑
计算机系统基础学习小笔记(1)
计算机系统层次
计算机系统基础学习小笔记(1)
计算机系统基础学习小笔记(1)
课程目标(如果不想看从这里就跳过吧)
计算机系统基础学习小笔记(1)
计算机系统基础学习小笔记(1)
计算机系统基础学习小笔记(1)
计算机系统基础学习小笔记(1)
查看往期内容
计算机系统基础学习小笔记(0)
查看之后内容