王道计组——计算机系统的层次结构

——本节内容为Bilibili王道考研《计算机组成原理》P6视频内容笔记。


一、层次结构

        我们用高级语言编写的代码最终要翻译成机器语言才能被CPU执行,所以传统意义上的机器只能识别机器语言(二进制表述的指令)。CPU在执行二进制指令时,还需要将这些机器指令细分为更细的一些小步骤来执行,称为微指令(或微操作)

        我们可以将微程序机器M0看做是对上层传统机器M1的分解,也就是用微程序机器M0的微指令系统来解释并且执行传统机器M1的每一条机器指令M1和M0即是计算机系统最底部的两个层次结构

        由于二进制指令并不便于编程,于是出现了符号式的程序设计语言——汇编语言。对于使用汇编语言的程序员来说,他所看到的机器似乎是可以直接识别他所编写的汇编语言程序的。所以使用汇编语言的程序员所看到的机器称为虚拟机器M3。事实上任何一台机器都不可能直接识别汇编语言,汇编语言编写的程序想要执行必须通过汇编程序的翻译将其翻译成等价的机器语言指令才可以执行。汇编语言指令和机器语言指令一一对应。

        而当今大多数编程所用的高级语言如C++、java等,在我们看来,似乎我们所使用的虚拟机器M4也是能直接识别高级语言的,但事实上并没有任何一台机器可以做到如此。我们用高级语言编写的代码需要经过编译程序的翻译,先将其翻译为汇编语言程序,再经过汇编程序翻译为机器语言程序。

        我们所编写的程序难免会用到操作系统所提供的一些服务,比如说某些系统调用。所以一般来说用汇编语言编写的程序同样也需要请求操作系统的服务,通过系统调用的方式来请求,系统调用又称为“广义指令”。

以上种种汇成了计算机系统的层次结构,如下图所示:

 其中下层是上层的基础,上层又是下层的扩展;


二、三种级别的语言

        上文叙述了三种级别的语言,也解释了我们的源程序是首先经过编译程序翻译为汇编,再经过汇编程序翻译为机器语言程序。然而也有一些语言经过编译程序的编译之后,可以直接由源程序得到机器语言程序。还有一些高级语言代码的执行并不是通过编译程序来编译的,而是通过解释程序(解释器)来将高级语言代码翻译成与之对等的机器语言指令,如JavaScript、Python、Shell。编译程序和解释程序的作用看起来似乎是一样的,其实质并不相同,如下:

        编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需要翻译一次);(比如我们用C语言写的程序,经过编译等步骤后,最终会形成.exe文件,也就是用机器语言描述的程序,只要生成了.exe文件,之后就不需要再编译了,每次要运行这个程序只需要加载这个.exe文件即可)

        解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)。

猜你喜欢

转载自blog.csdn.net/weixin_64084604/article/details/128402400
今日推荐