• 课题: 冯诺依曼式计算机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 

    友情,恋爱,推理,因为有当初的约定才努力不懈。
  • 相关阅读:
    git 学习笔记
    参看gitlab版本号
    PHP7.1安装xdebug
    言不由衷
    容器镜像上传和下载
    利用docker搭建ubuntu+nginx+PHP容器
    生产者消费者模式(转)
    白盒测试以及基路径法测试
    分页的简单实现
    排列2(全排列next_permutation 注意格式)
  • 原文地址:https://www.cnblogs.com/ziyang1060/p/12661168.html
Copyright © 2020-2023  润新知