资源简介
资源包含可运行的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写的画图程序
相关资源
- Java写的画图程序
- JAVA管程解决哲学家问题
- android游戏开发,连连看源码
- java基于socket编写的聊天室程序
- Java重启式随机游走代码(Random Walk
- java 程序换头像
- 东北大学高级java期末试题
- java小游戏 大炮打小鸟
- JAVA生成订单号(日期+流水号)
- java发邮件代码和说明,附mailapi.jar和
- java指纹识别-图片识别技术
- 运用java图形界面编写的学生信息管理
- Dijkstra迪杰斯特拉算法JAVA
- Java实现推箱子游戏
- JAVA三大框架思维导图
- Java数据结构和算法中文第二版——书
- JNI Java本地接口规范官方中文版
- JSP+JavaBean+MySQL实现登陆及增删改查
- java jsp mysql mvc 完整版,带图片
- Java核心技术 卷2 第10版 中文版
- 21 内部窗体java绝对新手
- 中国象棋对弈系统_java课程设计
- Java 2实用教程,第五版 。课后习题
- java生成二维码80134
- 教材管理系统+java+数据库+包含所有表
- JAVA计算器(含有优先级的判定)
- Java 源码:计算某个目录下的所有文件
- java 源码-电梯模拟器-灵活自定义-完美
- Java画图板课程设计报告只有报告没有
- java写的一个流星雨小程序
评论
共有 条评论