MARS(MIPS汇编程序和运行时模拟器)
MARS(MIPS汇编程序和运行时模拟器)
An IDE for MIPS Assembly Language Programming
简介
官网上的说明:MARS is a lightweight interactive development environment (IDE) for programming in MIPS assembly language, intended for educational-level use with Patterson and Hennessy’s Computer Organization and Design.(MARS是一个轻量级的交互式开发环境(IDE),用于使用MIPS汇编语言进行编程,旨在与Patterson和Hennessy的计算机组织和设计一起用于教育级别。)
目前最新版本为MARS 4_5
是一个4MB左右的.Jar可执行文件,需要使用Java环境,如果有Java运行环境(JRE)可直接使用,否则应先下载JRE或JDK
这里提供了不需要积分就可下载的JDK8和9的安装文件,都是64位windows安装程序,大家根据需要选择或自行去官网下载合适的版本:
jdk-8u281-windows-x64.zip
jdk-9.0.4_windows-x64_bin.zip
下载
- 百度搜索MARS MIPS simulator或者直接输入 http://courses.missouristate.edu/kenvollmar/mars/ 访问官网
- 点击下载最新版
为了便于网速比较慢的小伙伴下载,这里上传了MARS的资源,不需要C币就可以下载:Mars4_5.zip
这里下载下面的黄色提示需要注意一下,翻译是:“注意:您的MARS文字小得难以理解吗? 下载并使用新版本的Java 9,该Java 9包含一个修复程序,可以自动缩放和调整AWT和Swing组件的大小,以在Windows和Linux上显示每英寸高点(HiDPI)”。所以,如果大家觉得字体特别小的话,可以使用9及以上的JDK版本。
创建开始菜单快捷方式
因为MARS是.jar文件,所以不能直接固定到“开始”屏幕,需要进行一些处理:
- 创建Mars4_5.jar的快捷方式
- 将快捷方式移动到开始菜单目录
C:\Users\ XXX(实际的账户名称) \AppData\Roaming\Microsoft\Windows\Start Menu
- 在开始菜单搜索Mars,并右键选择 固定到“开始”屏幕
使用入门
Mars功能强大,具有代码提示,模拟运行,调试,统计等功能
- 界面简介
- 运行方法
示例1
#include <stdio.h>
int main(void)
{int r, x;x = 2;r = x + 3;printf("%d", r);return 0;
}
我们将上面的C语言代码转成mips汇编指令
x = 2;
#将t1寄存器的值置为2 li $t1, 2
r = x + 3;
#将 t1寄存器中的数据加3,存到t0中 (t0 = t1 + 3) add $t0, $t1, 3
printf("%d", r);
$v0 = 1, syscall -> print_int
$v0 = 4, syscall -> print_string,#将t0寄存器的值放到a0寄存器中 move $a0, $t0 #将v0寄存器的值置为1 li $v0, 1 #系统调用 syscall
完整转换的mips指令
#将t1寄存器的值置为2
li $t1, 2
#将 t1寄存器中的数据加3,存到t0中 (t0 = t1 + 3)
add $t0, $t1, 3
#将t0寄存器的值放到a0寄存器中
move $a0, $t0
#将v0寄存器的值置为1
li $v0, 1
#系统调用
syscall
运行示例1:
可能遇到的问题
1、Windows询问如何打开这个文件
这种情况一般是没有安装Java环境,下载安装JDK或JRE即可,当然,也有可能是下载的免安装版的JDK,这时就需要配置下环境变量了。
2、有Java环境却无法打开MARS,或双击无反应
建议在mars所在的目录使用命令:java -jar Mars4_5.jar
或javaw -jar Mars4_5.jar
(感谢评论区小伙伴提供的一个问题及解决方式)
3、安装了java之后双击Mars,系统提示以何种方式打开文件,在属性里把打开方式换为java会刚打开就闪退
在classpath里添加D:/Mars4_5.jar(这里的路径需要大家根据自己的实际路径来设置),然后在命令行里用java -classpath %classpath% Mars
,就可以打开了,但这种情况下不能关闭命令提示符,要不然mars也会退出。
环境变量配置:
运行示例:
这里想到Windows下应该有类似于在Linux经常用到的nohup及&,经过查找,可以在命令前加上start /b
来是实现Linux上的在命令结尾加&的效果,但是并没有找到类似nohup的命令。这就导致虽然运行转入了后台,但是关闭命令窗口依然会结束Mars的运行。
所以目前比较好的解决方案是使用VBS脚本:
①新建一个文本文档,命名为Mars.txt(可以随意,只要能在用到的时候知道这个脚本是运行Mars的即可)
②双击打开此文本文档,复制如下代码,并保存。
Set Ws = CreateObject("Wscript.Shell")
Ws.Run("java -classpath %classpath% Mars"),0
③将此文本文档的.txt后缀名更改为.vbs
至此,双击这个Mars.vbs即可运行Mars啦,而且不会有多余的命令窗口存在。
MARS(MIPS汇编程序和运行时模拟器)相关推荐
- 自定义汇编程序,Weaver和运行时的可插拔知识
作为贝叶斯工作的一部分,我对Kie进行了很多重构,使其具有清晰的扩展点. 我想确保可以完成贝叶斯系统的所有工作部件,而无需在现有内核中添加任何代码. 因此,现在每种知识类型都可以拥有自己的包,汇编器, ...
- dream weaver_具有定制汇编程序,Weaver和运行时的可插拔知识
dream weaver 作为贝叶斯工作的一部分,我对Kie进行了很多重构,使其具有清晰的扩展点. 我想确保贝叶斯系统的所有工作部分都可以完成,而无需在现有内核中添加任何代码. 因此,现在每种知识类型 ...
- shader weaver_具有自定义汇编程序,Weaver和运行时的可插拔知识
shader weaver 作为贝叶斯工作的一部分,我对Kie进行了很多重构,使其具有清晰的扩展点. 我想确保可以完成贝叶斯系统的所有工作部件,而无需在现有内核中添加任何代码. 因此,现在每种知识类型 ...
- 什么叫编译时和运行时
以前经常听说编译时和运行时的概念.但没太搞明白具体代表啥意思.后面花了点时间研究了下.总算知道个大概意思了. 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能 ...
- 编译时异常和运行时异常的区别
编译时异常和运行时异常的区别 参考文章: (1)编译时异常和运行时异常的区别 (2)https://www.cnblogs.com/lxl57610/p/6716252.html (3)https:/ ...
- Go 语言的垃圾回收演化历程:垃圾回收和运行时问题
Google Go 团队的成员 Richard L. Hudson (Rick) 近日在 Go 的官方博客和大家分享了他在2018年6月18日国际内存管理研讨会(ISMM)上发表的主题演讲稿.在过去的 ...
- Java受查异常和运行时异常的理解
Java受查异常和运行时异常的理解 概念与理解 怎么处理 概念与理解 Java提供三种可抛出结构(throwable):受查异常(checked exception),运行时异常(runtime ex ...
- 3.内存分配、逃逸分析与栈上分配、直接内存和运行时常量池、基本类型的包装类和常量池、TLAB、可达性分析算法(学习笔记)
3.JVM内存分配 3.1.内存分配概述 3.2.内存分配–Eden区域 3.3.内存分配–大对象直接进老年代 3.3.1.背景 3.3.2.解析 3.4.内存分配–长期存活的对象进去老年代 3.5. ...
- jvm运行时类加载机制_JVM体系结构:JVM类加载器和运行时数据区
jvm运行时类加载机制 各位读者好! 在JVM系列的上一篇文章中,开发人员了解了Java虚拟机(JVM)及其体系结构. 本教程将帮助开发人员正确回答以下主题的问题: ClassLoader子系统 运行 ...
最新文章
- linux设置nexus开机自启动_在linux中使用nexus搭建maven私服
- 极光推送收不到推送消息
- makefile笔记
- 盖瑞解剖学: 临床实践的解剖学基础 Gray‘s Anatomy: The Anatomical Basis of Clinical Practice 高清英文原版
- Mvc5 控制器,视图简单说明
- 惠新宸php教程_百度PHP高级顾问惠新宸:PHP在百度的发展历程
- html垂直边距,html – Styling Bootstrap的btn-group-justified,添加边距和垂直尺寸
- 微服务升级_SpringCloud Alibaba工作笔记0004---认识spring gateway理解新一代网关
- p67对应的服务器芯片组,使用 H67/P67 高速芯片组 Express 芯片组测试了适用于英特尔®台式机主板的外设...
- 如何计算代码运行的时间?
- MATLAB实现香农编码
- Krpano vtourskin.xml 默认皮肤详解
- 孩子给产品经理的一堂课
- 微信小程序入门(一)微信小程序注册申请
- 怎么访问云服务器上的图片
- instagram获取图片地址和视频地址
- ensp 防火墙 pat 映射
- centos8安装docker运行java文件
- 什么是HTTP状态码 常见状态码集合
- 统计分析中贝叶斯学派介绍
热门文章
- IDEA配合Flash CS6开发Flash项目--配置篇
- java练习 输出100以内的质数
- 【c++】设置控制台窗口字体颜色和背景色(system和SetConsoleTextAttribute函数 )(内含超好玩的c++游戏链接)
- OwnCloud私有云服务搭建教程
- css让两个div各自在两边的样式
- 使用NI-DAQmx获取设备名及物理通路名
- AT89C51 与 AT89S51/52 的区别
- 计算机考研学校报录比,【22考研】热门院校报录比汇总
- PCB板材知识及标准
- PM如何整合资源——来自项目管理群的讨论[转]