基于C++的Mips模拟器设计
Mips模拟器
1. 设计思路
- 利用C++模拟计算机CPU和内存,实现产品主要功能
- 集成
汇编器
进入模拟器,实现指令的汇编和反汇编 - 使用
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模拟器设计相关推荐
- 【Computer Organization笔记10】单周期CPU设计:基于7条MIPS指令的数据通路
本次笔记内容: P19 计算机组成原理(19) P20 计算机组成原理(20) 本节课对应幻灯片: 组成原理24 singlecycle.pptx 基于上节课的7条MIPS指令的数据通路,分别针对7条 ...
- 基于VC++的心脏传导系统模拟器设计(2D虚拟心脏)
心脏传导系统模拟器设计 目录 1 引言 2 1.1 临床心律失常分析方法 2 1.2 基于知识规则建模的自动诊断方法研究现状 4 1.3 心脏计算机仿真模型的研究发展现状 7 2 基于心电图生成模型的 ...
- 基于xilinx fpga的ofdm通信系统基带设计_仪器设备研制 | 基于AD9361的雷达干扰信号模拟器设计...
点击蓝字关注我们 基于AD9361的雷达干扰信号 模拟器设计 Design of radar jamming signal simulator based on AD9361 作者单位 罗勇江,杨腾飞 ...
- 基于MATLAB GUI的匀速目标回波模拟器设计
1. 课题的意义 雷达目标模拟器通过软.硬件结合的方法模拟代替真实目标,从而"复现"雷达信号的产生.传递.处理等动态过程,达到模拟目标回波信号的目的.雷达目标模拟器模拟的对象是雷达 ...
- 实验九 单周期MIPS CPU设计实验(基于Logisim)
一.实验目的 学生掌握控制器设计的基本原理,能利用硬布线控制器的设计原理在Logisim平台中设计实现MIPS单周期CPU. 二.实验内容 利用运算器实验,存储系统实验中构建的运算器.寄存器文件.存储 ...
- [开题报告+任务书+论文+PPT+源码]基于安卓的个人图书馆设计[包运行成功]
毕 业 设 计(论 文)开 题 报 告 1.结合毕业设计(论文)课题情况,根据所查阅的文献资料,每人撰写2000字左右的文献综述: 文 献 综 述一.系统开发的背景及意义随着信息技术地飞速发展,信息量 ...
- 基于Web的手机模拟器的实现(含源文件)
欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 设计说明书 题 目 基于Web的手机模拟器的实现 摘 要 随着信息技术的迅速发展,W ...
- 计算机网络实验_三层架构企业网络_基于Cisco Packet Tracer模拟器
三层架构企业网络_基于Cisco Packet Tracer模拟器 一.实验目的 1.了解一般企业网络的三层架构模型: 2.了解三层架构企业网络内部的通信流程: 3.理解双核心路由的热备份和负载均衡. ...
- 一篇很好的关于Android的本科毕业论文《基于android手机通讯录的设计与实现毕业论文》转自百度
本文转自: http://wenku.baidu.com/view/bb7dad58804d2b160b4ec058.html 相应的word文档csdn下载地址: http://download.c ...
最新文章
- 学习如何在AutoCad土木工程中绘制建筑设计图
- 如何成为数据型产品经理
- canvas实现的喜羊羊图像效果
- ffmpeg avformat_open_input返回失败的解决办法
- HDU 5832——A water problem 2016CCPC网络赛1001
- (69)Vue-cli 打包与部署
- 数据结构思维 第四章 `LinkedList`
- 风控中的企业与个人数据有哪些核验维度
- 个人从源码理解JIT模式下angular编译AppModule的过程
- 数据结构c语言描述 试题,数据结构c语言版试题大全(含答案)
- 客户关系管理之会员管理
- Ubuntu 制作光盘镜像文件
- 香港和内地重疾险25种常见重疾定义对比全解析
- Win10 蓝屏0xc0000098修复
- 东财量化接口怎么获取?
- win7下批处理bat文件:切换网络设置
- THUWC2017 酱油记
- OpenGL | 设置视口glViewport 裁剪glScissor 屏幕截图 glReadPixel
- 使用python3完成英文词频统计
- [知识普及贴]中国人不可不知道的知识(怕以后找不到了~~) [经典,值得收藏]