一个程序员应该懂这些

来源:互联网 发布:编程一般用什么软件 编辑:程序博客网 时间:2024/06/05 04:29

说一个程序,主程序就2行,很简单吧。但你到底懂不懂这个程序都干了些什么?

int a = 0;

cout<<a<<endl;

 

简单来说是申请了一个变量,然后输出,对啊!大一的小盆友都知道。

 

那我们从别的角度看看吧。

先说编译,算了编译太麻烦,跳过,就是直接生成的,假如是一个a.exe吧

 

这个a.exe用ultra edit打开,你看到的是什么?很复杂吧。

exe是windows的文件结构,到linux下面就不一样了,算了这些也省略了。

这个a.exe的实质是什么?是一个程序,废话!对这废话不是那么容易理解的。

这个程序首先在硬盘上,你运行程序,电脑做了什么?:

 

把程序装入内存

然后操作系统分配资源,开启一个新的线程

然后执行程序代码

然后退出操作系统收回资源

 

对吧,就几个步骤,但是你真清楚其中最关键的东西吗?

程序到底怎么运行的?

 

程序装入内存,以什么形式存储?

这里涉及到哈佛结构,把代码存到代码段,数据存到数据段。生成的exe应该已经把它分离出来了(不是很确定),分别存只是操作系统转移一下位置

把程序翻译成指令,让我看汇编指令吧,2进制的鬼也看不懂

算了还是变成自然语言吧:

先lea一下从内存取出数据

然后中断

然后输出,打印到屏幕是怎么回事呢?把数据转换成一个像素矩阵然后刷新屏幕,这个过程很复杂。

然后关中断

 

指令怎么执行,分多少步骤?组成原理有说

关于中断,微机接口有说

都不是一两句话能说清楚的。

 

现在你看到这两行代码能想到什么?如果不知道,还是研究研究吧。无论什么都没看到的那么简单。

 

 

 

原创粉丝点击