计算机系统的层次结构
计算机系统最底部的两个底层结构
那我们上一篇文章所举的例子来看:(ps:如果还没有看请查收~各个硬件的工作原理-CSDN博客)
第一条指令是二进制机器指令,它被分为了9个微指令
如下图:
由于传统的机器只能识别二进制指令,而这种指令用来编程是非常不方便的,所以在20世纪50年代出现了符号式的设计语言 -- 汇编语言
本质上跟机器语言没有太大的差别,只是更便于人类理解,依然是属于低级的语言,所以对编程而言也是不方便的.随着慢慢发展出现了很多高级语言(C++,java,python...)
为什么这些叫虚拟机器?是因为这些机器看起来好像可以直接懂高级语言一样,但实际上高级语言需要通过编译器翻译.而且我们写的程序难免会用到操作系统的一些服务,比如说:一些系统调用,所以一般用汇编语言编写的程序通常需要请求操作系统来请求服务,系统调用又称之为"广义指令"
下层是上层的基础,上层是对下层的扩展
三种级别的语言
C/C++就要通过一步编译和一步汇编来生成可执行的程序,当然如果你的程序中调用了其他的库函数,那么在经过汇编之后还要链接的操作,也就是将你写的程序和你调用的程序给链接起来
也有一些语言直接通过编译程序就转化成了机器语言程序
也有一些高级语言不是通过编译程序,而是通过解释程序,把高级语言代码翻译为与之对等的机器语言,很多脚本类语言都是采用这样的机制如:JavaScript Python Shell
编译程序就好像是你直接抄了一篇英语文章,而解释程序就好像同声传译(来一句我翻译一句).
注:编译,汇编,解释程序,可以统称为"翻译程序".
计算机体系结构VS 计算机组成原理
计算机体系结构:如何设计硬件与软件之间的接口(eg:有无乘法指令)
计算机组成原理:如何用硬件实现所定义的接口(eg:如何实现乘法指令)
图中的"透明"----看不见 [计算机的意思跟我们日常生活的透明不同]
某事"公开透明" --- 看得见
如果你觉得有帮助的话,就点点赞呀~ 共勉!