zoukankan      html  css  js  c++  java
  • 课题: 冯诺依曼式计算机CPU模拟器

     

    这次大作业的代码量比往年少很多,算上注释也就300行左右。

    我觉得最难的部分是对于题目的理解,也就是对指令集的理解。如何正确地获取和处理指令中蕴含的信息是解决该问题的关键。

    程序的大致步骤:

           程序开始时要从指定文件中读入一段用给定指令集写的程序至内存(从地址0开始顺序保存),程序计数器初始值也为0。然后程序就开始不断重复取指令(读取程序计数器PC内的指令地址,根据这个地址将指令从内存中读入,并保存在指令寄存器中,同时程序计数器内容加4,指向下一个条指令。因为我们所有的指令长度固定为4个字节,所以加4)。分析指令(对指令寄存器中的指令进行解码,分析出指令的操作码,所需操作数的存放位置等信息)和执行指令(完成相关计算并将结果写到相应位置)的过程。程序每执行一条指令就要输出CPU当前的状态,如各寄存器的值,指定内存的值等(具体要求在后边)。当读到停机指令时,程序按要求输出后就结束了。

    What I Learn:

    • short类型转按位转化为两个char类型的黑魔法:
    • 封装的重要思想:
      每次根据指令的类型对寄存器中数据处理的时候,情况很复杂,数据寄存器,地址寄存器和立即数寄存器都可以是目标寄存器与源寄存器。
      但是从整体上看,这个过程无外乎就是从寄存器中取数据,以及将结果存入寄存器中。这样得话,我们就可以将这两个子过程封装成两个函数,极大地简化了程序。



    • 附上:单核CPU模拟器代码链接:https://pan.baidu.com/s/1lzqZin4oJarKANA0LEOyzw   提取码:aohc
            CPU模拟器任务书链接:
      https://pan.baidu.com/s/1fXxnys4flisHV1sRcPdqEg  提取码:pxb7 

    友情,恋爱,推理,因为有当初的约定才努力不懈。
  • 相关阅读:
    MVC小系列(十五)【MVC+ZTree实现对树的CURD及拖拽操作】
    WCF身份验证之用户名密码认证
    sql 优化建议
    Redis key 设计技巧
    Redis配置文件详解
    Nlog配置文件
    Windown安装Mysql安装图解
    CentOS 7 命令备忘录
    WPF自定义ListBox样式
    WPF自定义圆形按钮样式资源文件
  • 原文地址:https://www.cnblogs.com/ziyang1060/p/12661168.html
Copyright © 2011-2022 走看看