资源简介
资源包含可运行的java代码,以及sample.txt(二进制源文件)作为输入测试用例。运行结果为解析后的汇编代码,和模拟出来的每个周期的寄存器状态。
代码片段和文件信息
/*On my honour I have neither given nor received unauthorized aid on this assignment.*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MIPSsim {
public static void main(String[] args) throws FileNotFoundException IOException Throwable {
File file = new File(args[0]);
Reader reader = new Reader(file);
Parser parser = new Parser();
Simulator simulator = new Simulator(256 file.getAbsoluteFile().getParent());
Instruction instruction = new Instruction();
String line;
while ((line = reader.read()) != null) {
instruction = parser.parseInstruction(line);
simulator.addInstruction(instruction);
if (instruction.name.equals(“BREAK“)) {
break;
}
}
PrintStream dis_out = new PrintStream(file.getAbsoluteFile().getParent() + “/disassembly.txt“);
//if(instruction.isEmpty()){
if(line == null){
dis_out.print(“The input file is empty.“);
}
ArrayList data = new ArrayList();
while ((line = reader.read()) != null) {
data.add(parser.parserData(line));
}
simulator.setData(data.toArray());
//simulator.printInstructions();
simulator.printInstructions(dis_out);
dis_out.close();
simulator.run();
reader.close();
}
}
class Parser {
public Parser() {
}
public Instruction parseInstruction(String line) {
Instruction instruction = new Instruction();
instruction.binary = line;
String prefix = line.substring(0 2);
int opCode = binaryToDec(line.substring(2 6) false);
line = line.substring(6);
InstructionFormat definition = Config.nullDefinition;
if (prefix.equals(“01“)) {
definition = Config.formatCategory1[opCode];
} else if (prefix.equals(“11“)) {
definition = Config.formatCategory2[opCode];
} else {
// unrecogonized instruction
}
instruction.name = definition.name;
instruction.template = definition.template;
//System.out.print(instruction.name + “ “);
// fill args
int[] args = new int[definition.argsLength.length];
for (int i = 0; i != args.length; i++) {
boolean isSignedArgs = false;
int argsLength = definition.argsLength[i];
if (argsLength < 0) {
isSignedArgs = true;
argsLength = -argsLength;
}
String rawArgs = line.substring(0 argsLength);
args[i] = Parser.binaryToDec(rawArgs isSignedArgs);
//System.out.print(“ “ + args[i]);
line = line.substring(argsLength);
}
//System.out.println();
int[] orderedArgs = new int[definition.argsOrder.length];
for (int i = 0; i != orderedArgs.length; i++) {
orderedArgs[i] = args[definitio
- 上一篇:个人通讯录管理系统源码
- 下一篇:Java写的画图程序
相关资源
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
评论
共有 条评论