课题: 冯诺依曼式计算机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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值