zoukankan      html  css  js  c++  java
  • 系统编程-操作系统概论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个步骤,我们就解析了程序的执行过程。

    .

    /************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
  • 相关阅读:
    C#listbox使用方法
    poj 3894 System Engineer (二分图最大匹配--匈牙利算法)
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 黑白无常
  • 原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/14290466.html
Copyright © 2011-2022 走看看