博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
“C语言” 读书札记(四)之[再续编译执行]
阅读量:6873 次
发布时间:2019-06-26

本文共 697 字,大约阅读时间需要 2 分钟。

 
介绍
 
  上一篇a.out(hello,world程序)执行之后发生了什么?这次通过系统硬件和操作做粗略的描述,这样对我们也是有一些帮助的。
 
  如果中间若有误,请不吝赐教。
 
 从键盘上读取a.out命令
 
  当我们打开我们的终端的时候,shell程序会执行它的指令,等待我们的输入。
  当我们在键盘上输入"a.out",敲回车时,shell就知道我们结束了命令的输入。然后shell的指令就会逐一读取目标文件a.out的代码和数据到寄存器,再把代码和数据拷贝到主存储器。
                                 
流程图如下

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

 

科普普及:

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

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

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

 

从存储器写输出串到显示器
 
 1、 一旦a.out目标文件中的代码和数据被加载到了主存储器,CPU就开始执行
main.c程序的主程序中机器语言指令。
 2、 这些指令将"hello,world\n"串中的字节从主存储器中拷贝到寄存器文件。
 3、 再从寄存器中文件拷贝到显示设备,最终显示在屏幕上。
 
流程图:
  

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

总结
 
从两个角度分析上面的问题:
  机器指令:最初是在磁盘上——》(程序加载时)拷贝到主存——》(处理器运行指令时)从主存拷贝到处理器。
  数据串:最初是在磁盘上——》拷贝到主存——》显示设备。
 
参考文献:
《深入理解计算机系统》
 
推荐
 
 
 
 
 
 
 
 
 
 
 
 
 

转载地址:http://rwlfl.baihongyu.com/

你可能感兴趣的文章
自制sonicwall串口线
查看>>
fstab 文件丢失
查看>>
shell脚本的基础1
查看>>
MySQL slow query log
查看>>
C++函数重载
查看>>
SecureCRT和SecureFX中文显示乱码
查看>>
HTML5概述
查看>>
VS Code 公布 2018 路线图:生态改进 快乐编码
查看>>
linux lsattr命令: 显示文件属性
查看>>
linux as4 dns设置
查看>>
Tor介绍
查看>>
windows2003终端服务器超出了最大允许连接数
查看>>
linux 开启独立iptables日志
查看>>
shell之while循环
查看>>
FFmpeg avcodec_parameters_to_context函数剖析
查看>>
初探Cocos Creator
查看>>
常见的监控软件原理
查看>>
svn 合并分支到主干
查看>>
PHP学习笔记(<a href='?out=login'>)
查看>>
PLSQL子程序即PLSQL块
查看>>