“C语言” 读书札记(四)之[再续编译执行]
2012-06-25 09:15
218 查看
介绍
上一篇a.out(hello,world程序)执行之后发生了什么?这次通过系统硬件和操作做粗略的描述,这样对我们也是有一些帮助的。
如果中间若有误,请不吝赐教。
从键盘上读取a.out命令
当我们打开我们的终端的时候,shell程序会执行它的指令,等待我们的输入。
当我们在键盘上输入"a.out",敲回车时,shell就知道我们结束了命令的输入。然后shell的指令就会逐一读取目标文件a.out的代码和数据到寄存器,再把代码和数据拷贝到主存储器。
![](http://pic002.cnblogs.com/images/2012/152332/2012052511415738.png)
流程图如下
![](http://pic002.cnblogs.com/images/2012/152332/2012062510203642.png)
![](http://pic002.cnblogs.com/images/2012/152332/2012052511415738.png)
那么在硬件中是如何奔跑的呢?
![](http://pic002.cnblogs.com/images/2012/152332/2012062508591534.png)
![](http://pic002.cnblogs.com/images/2012/152332/2012062509053289.png)
科普普及:
1、主存用来存放指令和指令处理的数据。
2、处理器(CPU的简称)是解释(或执行)存储在主存中指令的引擎。在任何一个时间点上,CPU中的PC(程序计数器)都指向主存中的某条机器语言指令。
3、有一种DMA(直接存储器存取)技术,数据可以不通过处理器而直接从磁盘到达主存储器。
从存储器写输出串到显示器
1、 一旦a.out目标文件中的代码和数据被加载到了主存储器,CPU就开始执行main.c程序的主程序中机器语言指令。
2、 这些指令将"hello,world\n"串中的字节从主存储器中拷贝到寄存器文件。
3、 再从寄存器中文件拷贝到显示设备,最终显示在屏幕上。
流程图:
![](http://pic002.cnblogs.com/images/2012/152332/2012062500003522.png)
![](http://pic002.cnblogs.com/images/2012/152332/2012052511415738.png)
那么这些在硬件中是如何奔跑的呢?
![](http://pic002.cnblogs.com/images/2012/152332/2012062423515556.png)
![](http://pic002.cnblogs.com/images/2012/152332/2012062509154063.png)
总结
从两个角度分析上面的问题:
机器指令:最初是在磁盘上——》(程序加载时)拷贝到主存——》(处理器运行指令时)从主存拷贝到处理器。
数据串:最初是在磁盘上——》拷贝到主存——》显示设备。
参考文献:
《深入理解计算机系统》
推荐
上一篇a.out(hello,world程序)执行之后发生了什么?这次通过系统硬件和操作做粗略的描述,这样对我们也是有一些帮助的。
如果中间若有误,请不吝赐教。
从键盘上读取a.out命令
当我们打开我们的终端的时候,shell程序会执行它的指令,等待我们的输入。
当我们在键盘上输入"a.out",敲回车时,shell就知道我们结束了命令的输入。然后shell的指令就会逐一读取目标文件a.out的代码和数据到寄存器,再把代码和数据拷贝到主存储器。
![](http://pic002.cnblogs.com/images/2012/152332/2012052511415738.png)
流程图如下
![](http://pic002.cnblogs.com/images/2012/152332/2012062510203642.png)
![](http://pic002.cnblogs.com/images/2012/152332/2012052511415738.png)
那么在硬件中是如何奔跑的呢?
![](http://pic002.cnblogs.com/images/2012/152332/2012062508591534.png)
![](http://pic002.cnblogs.com/images/2012/152332/2012062509053289.png)
科普普及:
1、主存用来存放指令和指令处理的数据。
2、处理器(CPU的简称)是解释(或执行)存储在主存中指令的引擎。在任何一个时间点上,CPU中的PC(程序计数器)都指向主存中的某条机器语言指令。
3、有一种DMA(直接存储器存取)技术,数据可以不通过处理器而直接从磁盘到达主存储器。
从存储器写输出串到显示器
1、 一旦a.out目标文件中的代码和数据被加载到了主存储器,CPU就开始执行main.c程序的主程序中机器语言指令。
2、 这些指令将"hello,world\n"串中的字节从主存储器中拷贝到寄存器文件。
3、 再从寄存器中文件拷贝到显示设备,最终显示在屏幕上。
流程图:
![](http://pic002.cnblogs.com/images/2012/152332/2012062500003522.png)
![](http://pic002.cnblogs.com/images/2012/152332/2012052511415738.png)
那么这些在硬件中是如何奔跑的呢?
![](http://pic002.cnblogs.com/images/2012/152332/2012062423515556.png)
![](http://pic002.cnblogs.com/images/2012/152332/2012062509154063.png)
总结
从两个角度分析上面的问题:
机器指令:最初是在磁盘上——》(程序加载时)拷贝到主存——》(处理器运行指令时)从主存拷贝到处理器。
数据串:最初是在磁盘上——》拷贝到主存——》显示设备。
参考文献:
《深入理解计算机系统》
推荐
![](http://pic002.cnblogs.com/images/2012/152332/2012050707292019.png)
相关文章推荐
- “C语言” 读书札记(三)之[编译执行]
- 【C语言】编译执行
- [C语言 - 11] 语言编译执行
- 读书札记:7天搞定C语言(二)
- CentOS 5.5下c语言的编译与执行
- KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】
- C语言_来了解一下GCC编译器编译C可执行脚本的过程
- C语言-源程序编译执行流程
- c语言编译预处理和条件编译执行过程的理解
- Linux:错写C语言default关键字,不影响编译,但影响执行
- C语言编译执行过程详解
- 黑马程序员——C语言之函数与手动编译执行C程序
- C语言编译成可执行文件的模板,并放到虚拟机中运行。
- C语言文件的编译与执行的四个阶段并分别描述
- 读书札记: “集合已修改;可能无法执行枚举操作。”
- Windows下Qt for Android 编译安卓C语言可执行程序
- Android-------C语言可执行程序编译实例
- [C语言]在命令行编译执行程序
- C语言常见编译错误与执行错误
- c语言编译执行过程