从编程语言到微指令
从编程到微指令
从学语言开始我就就觉得很神奇,
一个机器怎么能实现这么多丰富的功能呢?
机器到底是怎么设计出来的?
我想明白:从c++到机器的01代码到底发生了什么?硬件都做了什么?
以前一直觉得这是很难的,我甚至为自己准备了好多学习计划。
8086汇编语言,微机原理,51单片机,数字逻辑电路。
我想最少得把上面4本书完全弄通了,才能解决上面的问题吧。
但是最近学了jvm的原理,后有补充了点8086的知识,似乎就豁然开朗了。
无论什么样的软件,什么样的程序。无外乎作如下三件事
1.输入
2.处理
3.输出
输入输出,无非就是数据,
处理的过程无非就是处理数据。
所以我做了一个简单的归纳:用户关系的是数据,而电脑给我们加工数据。
电脑本质上就像一个函数,我们给他一些数据,他给我们输出一些数据。
那么我们写的程序机器到底是什么执行的呢?
首先我们无论用什么语言写的程序都最终编程二进制代码,二进制是啥呢?
先说说我们写的函数编程了啥,实际上就是指针,有就是说编程电脑执行的一个位置。
那我们写的跳转语句编程啥了呢,还是指针,指向程序跳转的位置。
那么电脑访问到某个位置执行啥呢?
就是微指令,电脑也只能执行他是微指令。
到这来我把我们的程序怎么比电脑执行的过程整理一下
- 写程序
- 编译,连接,将程序编程01代码。(这个过程就是把我们写的任何语句对最终转换成微指令)
- 执行,将我们的程序导入内存。
-
cpu执行内存中的一条条指令,具体内容如下:
a.指令计数器会控制执行微指令的顺序
b.遇到分支处理会根据数据状态会有跳转
c.几乎没一条指令的处理都会有数据的变化
d.在处理的过程中,也包括io系统对处理数据的读取和表示
要点:
1.我们写的程序最终会装换成微指令
2.微指令就像函数一样,不同的指令对数据进行不同成处理
3.我们看到丰富多态的输入输出(动画,游戏,计算…),都是数据的表现形式。
4.丰富的源泉在于微指令的设计和硬件对数据的表现力(多媒体等)
疑问
二进制文件时如何加载到内存的?
指令如何跳转的?
指令如何画图的?
指令如何播放动画的?
你可能还有很多的疑问?。。。
但我要说的重点是:
我想写的程序=>我们的程序最终会编程指令和指令参数=>cpu会执行这些指令和指令参数=>这些指令的组合就能组成丰富多彩的机能(机能的本质体现就是用的输入和输出)