Mips模拟器

1. 设计思路

  1. 利用C++模拟计算机CPU和内存,实现产品主要功能
  2. 集成汇编器进入模拟器,实现指令的汇编和反汇编
  3. 使用QT开发图形界面,方便用户操作

2. 原理证明

  • 汇编器的证明已经在汇编器产品说明中完成
  • CPU的模拟完全忠于寄存器和内存,其正确性在理论上是显然的,我们会在后面的部分通过测试样例来证明其实践上的正确性。

3. 程序架构

3.1 程序流程图

3.2 图形界面

模拟器界面利用Qt搭建,包括按钮、代码编辑框、控制台,以及内存、显存、寄存器的显示区域。

基础界面如下:

在使用时,通过上方的按钮打开文件、编译运行,用户可以实时查看程序运行过程、内存变化、寄存器变化,并且可以在任何时候修改内存和寄存器。

4. 使用手册

4.1 编写与编译

新建文件

首先单击新建文件,提示新建成功

随后直接在代码编辑区域里输入代码即可

打开已有文件

编译

直接点编译按钮即可,提示编译成功,同时程序将会在运行程序目录下新建一个binary_code.txt文件,存放汇编代码生成的二进制码,作为以后的运行使用,请勿删除。www.biyezuopin.vip

4.2 调试与运行

如果直接点击运行,程序会直接运行结束,并切换至显存界面供用户查看结果;如果点击单步运行,程序会一步一步运行,用户可以在运行过程中查看寄存器和内存。

跳转

内存无法用一页显示完全,因此我们提供了跳转显示功能,输入 10,单击跳转,可以看到此时内存显示区域已经从 10 开始了。

直接修改内存和寄存器

在调试时,为了方便用户,避免重复编写和编译,我们提供了直接修改内存和寄存器的功能。

输入 10 地址,输入修改的内容是 48,点击修改,可以发现结果已经变为 48。注意这里的数字是 16 进制!

输入 2 寄存器,设置为 10,点击设置按键,可以看到寄存器已经发生了变化。

尽管这项功能非常好用,但也请用户时刻注意,不要修改乱了内存。

5. 结果分析

经过测试,本产品功能完善且无bug。测试人员使用一段完整的汇编程序进行编译、运行、调试,均无任何错误。

测试样例如下:

    addi $t0,$zero,0
loop:  li $v0,1+4 #read_intsyscalladd $t0,$v0,$t0 #sum = sum + abne $v0,$zero,loopli $v0,1move $a0,$t0 #print(sum)syscall

6. 技术指标

6.1 功能支持

本产品支持所有Mips标准指令、大量的Mips伪指令、格式指令、标签、表达式和变量。有关Mips的具体内容见附录。

本产品支持汇编语言的输入输出,类型包括整数、单/双精度浮点数、字符、字符串。

本产品具备完善且友好的用户界面,使用体验佳。

6.2 程序亮点:语法高亮

本产品的代码编辑部分实现了汇编语言的语法高亮功能,对用户编辑的代码进行分析,对各种关键字进行不同颜色的高亮提示,方便用户检查错误、分析代码。

我们采用了正则表达式分析代码,表达式的内容如下:

经过高亮处理后的代码如下:

可以看到,代码十分美观。

参考资料

  • ZPC之MIPS指令集2019.pdf

基于C++的Mips模拟器设计相关推荐

  1. 【Computer Organization笔记10】单周期CPU设计:基于7条MIPS指令的数据通路

    本次笔记内容: P19 计算机组成原理(19) P20 计算机组成原理(20) 本节课对应幻灯片: 组成原理24 singlecycle.pptx 基于上节课的7条MIPS指令的数据通路,分别针对7条 ...

  2. 基于VC++的心脏传导系统模拟器设计(2D虚拟心脏)

    心脏传导系统模拟器设计 目录 1 引言 2 1.1 临床心律失常分析方法 2 1.2 基于知识规则建模的自动诊断方法研究现状 4 1.3 心脏计算机仿真模型的研究发展现状 7 2 基于心电图生成模型的 ...

  3. 基于xilinx fpga的ofdm通信系统基带设计_仪器设备研制 | 基于AD9361的雷达干扰信号模拟器设计...

    点击蓝字关注我们 基于AD9361的雷达干扰信号 模拟器设计 Design of radar jamming signal simulator based on AD9361 作者单位 罗勇江,杨腾飞 ...

  4. 基于MATLAB GUI的匀速目标回波模拟器设计

    1. 课题的意义 雷达目标模拟器通过软.硬件结合的方法模拟代替真实目标,从而"复现"雷达信号的产生.传递.处理等动态过程,达到模拟目标回波信号的目的.雷达目标模拟器模拟的对象是雷达 ...

  5. 实验九 单周期MIPS CPU设计实验(基于Logisim)

    一.实验目的 学生掌握控制器设计的基本原理,能利用硬布线控制器的设计原理在Logisim平台中设计实现MIPS单周期CPU. 二.实验内容 利用运算器实验,存储系统实验中构建的运算器.寄存器文件.存储 ...

  6. [开题报告+任务书+论文+PPT+源码]基于安卓的个人图书馆设计[包运行成功]

    毕 业 设 计(论 文)开 题 报 告 1.结合毕业设计(论文)课题情况,根据所查阅的文献资料,每人撰写2000字左右的文献综述: 文 献 综 述一.系统开发的背景及意义随着信息技术地飞速发展,信息量 ...

  7. 基于Web的手机模拟器的实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 设计说明书 题    目   基于Web的手机模拟器的实现 摘  要 随着信息技术的迅速发展,W ...

  8. 计算机网络实验_三层架构企业网络_基于Cisco Packet Tracer模拟器

    三层架构企业网络_基于Cisco Packet Tracer模拟器 一.实验目的 1.了解一般企业网络的三层架构模型: 2.了解三层架构企业网络内部的通信流程: 3.理解双核心路由的热备份和负载均衡. ...

  9. 一篇很好的关于Android的本科毕业论文《基于android手机通讯录的设计与实现毕业论文》转自百度

    本文转自: http://wenku.baidu.com/view/bb7dad58804d2b160b4ec058.html 相应的word文档csdn下载地址: http://download.c ...

最新文章

  1. 学习如何在AutoCad土木工程中绘制建筑设计图
  2. 如何成为数据型产品经理
  3. canvas实现的喜羊羊图像效果
  4. ffmpeg avformat_open_input返回失败的解决办法
  5. HDU 5832——A water problem 2016CCPC网络赛1001
  6. (69)Vue-cli 打包与部署
  7. 数据结构思维 第四章 `LinkedList`
  8. 风控中的企业与个人数据有哪些核验维度
  9. 个人从源码理解JIT模式下angular编译AppModule的过程
  10. 数据结构c语言描述 试题,数据结构c语言版试题大全(含答案)
  11. 客户关系管理之会员管理
  12. Ubuntu 制作光盘镜像文件
  13. 香港和内地重疾险25种常见重疾定义对比全解析
  14. Win10 蓝屏0xc0000098修复
  15. 东财量化接口怎么获取?
  16. win7下批处理bat文件:切换网络设置
  17. THUWC2017 酱油记
  18. OpenGL | 设置视口glViewport 裁剪glScissor 屏幕截图 glReadPixel
  19. 使用python3完成英文词频统计
  20. [知识普及贴]中国人不可不知道的知识(怕以后找不到了~~) [经典,值得收藏]

热门文章

  1. smarty中定义变量
  2. Linux系统学习关于Vim文本编辑器的使用介绍
  3. 几款效率神器助你走上人生巅峰之园友推荐[收藏]
  4. Lombok实现原理解析
  5. 什么叫电位器?什么叫电阻器?
  6. 最新cocos2d-x 3.0博客教学 小游戏[史上最坑爹的游戏] 003第二关:点击绿色按钮100下
  7. Android 圆形停止按钮,跑步APP停止动画
  8. 明星项目ALGO沦为散户收割机:5天跌去60%,私募却获48倍回报
  9. 视频基础知识和直播系统架构
  10. CloudMounter for mac(云盘本地加载工具)