代码的底层执行过程

计算机的基本构成 代码的底层执行过程
文章图片

一个主机主要由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如何工作。

    推荐阅读