系统编程-操作系统概论PART1

Part1. 计算机的基本组成原理

Part2. 计算机执行原理顶层视图

Part3. 指令

指令周期

取指令和执行指令

指令格式

前面1字节是操作码,代码指令的功能,例如加法功能。

后面3字节用于寻找要操作的数据值。

由于数据存储在内存(存储器)中,由内存地址来标识,所以后3字节本质是要操作的数据在内存(存储器)中的地址,进而通过此地址来找到要操作的数据值。

Part4. 程序执行的过程详解

Demo程序目的:

 执行过程图解:

上图的阅读顺序,我已经用数字1-6做了标注。

第1步,取指阶段

PC(程序计数器)中的数据为300(十六进制),表示会要读取内存地址300处的数据到指令寄存器IR中,

于是IR中就有了数据1940(十六进制). 这就是取指阶段要做的事情了。

PS:

根据本博客Part3 指令格式部分的介绍,1940这个十六进制数的前4位是操作码,所以后面的940这三个字节的含义是要操作的数据在内存(存储器)中的地址。

从上图可以看到,940存储单元内的数据为0003. 

接下来进入第2步,执行阶段

第1步是取指,这步是执行。根据第1步的取指分析,所以第2步的执行,肯定是把刚才找到的数据0003存放到累加器AC中去了。

同时PC也自动加1,变成了301,这也就意味着要开始新的取指了,于是进入第3步。

第3步 新一轮的取指阶段

此时PC(程序计数器)中的数据为301(十六进制),表示会要读取内存地址301处的数据到指令寄存器IR中,

于是IR中就有了数据5941(十六进制),5941这个十六进制数的前4位是操作码,所以后面的941这三个字节的含义是要操作的数据在内存(存储器)中的地址。

从上图可以看到,941存储单元内的数据为0002. 

第4步,新一轮的执行阶段

对应第3步的取指,这步是执行。根据第3步的取指分析,所以第4步的执行:肯定是把刚才找到的数据0002也放到累加器AC中去,AC器将之与之前房间来的0003进行运算,得到了累加的结果5,但是此时已然存放在AC中。

同时PC再次自动加1,变成了302,这也就意味着要开始第三次取指了,于是进入第5步。

第5步 第三次取指阶段

此时PC为302,所以此次取指将会读取内存地址302处的数据2941到指令寄存器IR中,

这个2941中,同理,2是操作码,941表示要操作的地址,PS:根据操作码,之前的指令是向要操作的地址读数据,而现在指令肯定是向要操作的地址写数据。

第6步 第三次执行阶段

将AC中的数据5就写入到941所在内存中。

通过上述6个步骤,我们就解析了程序的执行过程。

.

/************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/14290466.html