代码的底层执行过程
计算机的基本构成
文章图片
一个主机主要由CPU与主存构成,主存也就是我们通常所说的内存。而我们通常所说的硬盘叫辅存。CPU主要与主存进行数据交互。
主存
文章图片
主存由存储体,存储地址寄存器(Memory Address Register, 简称MAR),存储数据寄存器(Memory Data Register,简称MDR)构成。
存储体,顾名思义,主存的主要功能就是存储,存储体就是存储数据的地方。
MAR和MDR可以举一个例子来理解。把主存比作一个快递点,存储体就是货架,每个货架的每一层都对应一个编号,货架上放着包裹(数据),你想要取包裹就需要有取件码(数据地址),你把取件码告诉店员(把数据地址传入MAR),店员告诉快递小哥取件码,快递小哥通过取件码找到包裹并放到柜台上等你取走(主存根据MAR的地址获取对应地址上的数据并放入MDR)。所以说货架就队形存储体,MAR就对应店员,MDR就对应柜台。
文章图片
CPU把想要获取数据的时候,就会将数据的地址传入MAR,主存通过MAR里的地址到对应位置获取数据并放入MDR中,CPU就可以取走想要的数据。这是取数据的过程。
不同于快递点的是,我们还可以通过CPU往里写数据,CPU将想要把数据想要写入的地址放入MAR中,并把想要写入的数据放入MDR中,主存就会往存储体写入地址,当然,写和读都还有分别的信号控制写数据还是读数据,我们在这里不做展开。
文章图片
存储体由一一个个存储单元构成,每一个存储单元存储着一串二进制数,每一串二进制数都一应一个地址。
CPU
CPU由运算器和控制器构成
运算器
运算器负责实现算入运算(加减乘除)和逻辑运算(与或非)。
文章图片
运算器由算数逻辑单元ALU与ACC,MQ,X(寄存器,在这里先把他们理解为存储运算数和结果的地方),
ALU负责运算。
控制器
文章图片
CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,自动加1.
代码执行过程
int a = 2, b = 3, c = 1, y = 0;
void main() {
y = a * b + c;
}
通过上述代码执行过程,让我们看看CPU与主存是如何协调工作的。
首先代码编译成汇编语言,汇编语言再变成机器码存储在主存中。
文章图片
上边存储的为指令,下面存储的为数据。指令分为操作码和地址码,操作码代表指令的标识,地址码代表指令操作的地址。
下面我们来看看执行指令的具体步骤。
文章图片
第一个指令
文章图片
第二个指令
文章图片
第三个指令
文章图片
第四个指令
文章图片
第五个指令,停机。
总结 【代码的底层执行过程】计算机组成原理概括来讲就是讲了这些内容,具体的细节分散在了以后每个章节的学习中,包括如何进行算术运算和逻辑运算,如何主存与CPU数据如何交互,指令如何设计,CPU如何工作。
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河