“Hello world”是如何出现在屏幕上的?

当你在编译器里写出程序的时候,它是如何在计算机上运行的?接下来我们以最简单的C语言的"Hello world"代码来告诉你,程序是如何运行。

图片

1.编写完程序后,一个sum.c文件就保存在了桌面上,这个叫做C源文件。那桌面又属于计算机的哪一个部分呢?

图片

一台计算机包含如下基本3个部分:

在计算机中,存储器用来保存信息。存储器又分为内部存储器外部存储器,内部存储器即我们所说的内存,而外部存储器就是我们说的磁盘,磁盘又分为硬盘和软盘,而我们电脑中的大部分就都是硬盘了,这里也分为固态硬盘和传统机械硬盘。不管怎么说吧,磁盘也好内存也罢,就是用来存放数据的,那么我们就知道了这个C源文件应该就是存放在电脑中的硬盘中了。

代码被保存到硬盘之后,当计算机要运行程序的时候,就把代码从硬盘复制到内存中。那么在这个过程中,CPU起到什么作用?

存储器的层次结构如下

图片

通过这张图,我们可以清晰直观的了解到CPU,内存和硬盘三者之间的关系。

我们之前的代码被保存到了硬盘中,如果要执行这段程序的话,需要把这段代码从硬盘中读取到内存中,此时的代码已经变成了二进制文件存储在内存中。代码的作用是把求出a + b 的值并输出显示到屏幕上,CPU收到“加”这个指令后,就把a的值和b的值读入到寄存器中、那么问题又来了,CPU是啥?

2.CPU是啥玩意

图片

CPU主要由运算器、控制器和存储器组成。

CPU的作用主要有以下几种功能:

接下来,我们重点介绍寄存器运算器

微电子的同学应该很熟悉寄存器(由触发器组成)了,通俗来讲寄存器是存储部件,容量非常有限,能存储的数据的大小。寄存器用来存放指令、数据等处理对象。现在来说一般有两种,也就是我们常听说的32位和64位,32位的寄存器就能存储4个字节的数据,64位的寄存器就能存储8个字节的数据,另外CPU也分为32位和64位其实就是由其中的寄存器的位数决定的。现在的CPU一般都内置了很多的寄存器,依此来完成比较复杂的操作。

运算器是计算的核心,主要的作用负责从内存读入寄存器的数据。需要注意的是:运算器是没法直接操作内存中的数据的,运算器操作的数据是寄存器中存放的数据

3.CPU和内存的交互

程序代码被读取到内存中了,现在要执行这段代码,那就需要CPU出马了,首先,CPU会去读取需要进行操作的数据。继续看这代码:也就是需要读取数据a和b,那么读取到的数据a和b存放在哪了呢?根据我们上面对CPU简单的了解可知,数据a和b是被放到了CPU中的寄存器中,如下图所示:

图片

在CPU中有两个比较重要的组件就是运算器和寄存器,CPU中的寄存器可以有很多个,再看内存,是一个个类似楼房形状,每层楼房都有编号,比如说现在数据a和b分别存放在#1和#2上,然后CPU将他们读取放在寄存器R1和R2上。

这个时候就要计算a和b的和,这就用到了运算器,它会拿到寄存器R1和R2,也就是拿到数据a和b,然后做加法运算.

计算之后的结果即sum,运算器会再次把它放到寄存器,比如R1中,这个时候之前的数据b就会被覆盖,如此一来,CPU和内存就一起完成一次加法运算操作。

接下里,我们的关注点从加法运算转移到内存,实际上,程序代码被加载到内存的时候会产生数据和指令两部分,数据我们都清楚,那指令是什么

指令就是说明程序该怎么执行。对于CPU来说就是告诉CPU该做什么,比如告诉CPU,读取数据a和b,然后再将他们相加,即CPU是根据指令干活,指令让怎么干,CPU就执行什么操作。

4 CPU运行指令的过程

 指令执行过程:取指令-分析指令-执行指令

图片

此外,每取完一条指令,还需要为下一条指令作准备,形成下一条指令的地址。

文章同步发布在微信公众号:IC码农。分享日常所学和基础知识,分享历年大厂笔试题,秋招信息,EDA工具和培训视频,学习交流群,欢迎关注。

 

到这里,应该对程序是如何运行的了解差不多了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值