“C语言” 读书札记之[再续编译执行]

开发 前端
当我们在键盘上输入"a.out",敲回车时,shell就知道我们结束了命令的输入。然后shell的指令就会逐一读取目标文件a.out的代码和数据到寄存器,再把代码和数据拷贝到主存储器。

介绍

上一篇a.out(hello,world程序)执行之后发生了什么?这次通过系统硬件和操作做粗略的描述,这样对我们也是有一些帮助的。

如果中间若有误,请不吝赐教。

从键盘上读取a.out命令

当我们打开我们的终端的时候,shell程序会执行它的指令,等待我们的输入。

当我们在键盘上输入"a.out",敲回车时,shell就知道我们结束了命令的输入。然后shell的指令就会逐一读取目标文件a.out的代码和数据到寄存器,再把代码和数据拷贝到主存储器。

 [[80346]]流程图如下

[[80346]]那么在硬件中是如何奔跑的呢?

科普普及:

1、主存用来存放指令和指令处理的数据。

2、处理器(CPU的简称)是解释(或执行)存储在主存中指令的引擎。在任何一个时间点上,CPU中的PC(程序计数器)都指向主存中的某条机器语言指令。

3、有一种DMA(直接存储器存取)技术,数据可以不通过处理器而直接从磁盘到达主存储器。

从存储器写输出串到显示器

1、 一旦a.out目标文件中的代码和数据被加载到了主存储器,CPU就开始执行main.c程序的主程序中机器语言指令。

2、 这些指令将"hello,world\n"串中的字节从主存储器中拷贝到寄存器文件。

3、 再从寄存器中文件拷贝到显示设备,最终显示在屏幕上。

流程图:

[[80346]]那么这些在硬件中是如何奔跑的呢?

总结

从两个角度分析上面的问题:

机器指令:最初是在磁盘上——》(程序加载时)拷贝到主存——》(处理器运行指令时)从主存拷贝到处理器。

数据串:最初是在磁盘上——》拷贝到主存——》显示设备。

原文链接:http://www.cnblogs.com/baochuan/archive/2012/06/25/2559766.html

责任编辑:张伟 来源: 川山甲
相关推荐

2012-06-25 10:00:29

C语言

2012-06-23 18:13:39

C语言

2012-07-12 14:06:10

C语言

2012-06-28 10:38:45

Web

2012-06-20 15:01:04

Web

2016-12-12 14:05:29

戴尔

2013-09-03 09:35:10

2009-08-25 16:32:24

C#语言

2009-08-26 17:22:09

C#语言

2022-09-27 08:11:38

创新文化技术商业模式

2022-11-15 07:39:48

2010-05-06 10:01:26

nginx负载均衡

2010-07-19 17:06:35

MPD大会成功举办

2022-07-06 07:42:14

DOMHook标签

2023-11-08 13:17:00

Python解释型语言

2010-02-03 17:29:06

Python编译

2022-07-28 13:18:48

系统日志编码器

2010-01-18 09:39:25

C++语言

2011-12-31 21:34:32

库克
点赞
收藏

51CTO技术栈公众号