Java MIPS程序集调度

Java MIPS程序集调度,java,mips,Java,Mips,我必须读入汇编文本文件,然后计算MIPS汇编语言程序的调度要求。我能够阅读该文件,但不确定如何安排MIPS的要求。我正在用java编写我的程序 我的日程安排应该基于以下内容: 指令提取(如果): 获取电脑指向的指令,然后通过向电脑添加4来更新电脑(因为所有指令的长度正好为4字节) 指令解码(ID): •解码指令。 •读取寄存器。 •对寄存器内容进行相等性测试。 •通过向递增的PC添加偏移量,计算可能的分支目标地址。 •如果相等性测试为真,且指令解码为分支指令,则将分支目标地址加载到PC中。 请注

我必须读入汇编文本文件,然后计算MIPS汇编语言程序的调度要求。我能够阅读该文件,但不确定如何安排MIPS的要求。我正在用java编写我的程序

我的日程安排应该基于以下内容:

  • 指令提取(如果): 获取电脑指向的指令,然后通过向电脑添加4来更新电脑(因为所有指令的长度正好为4字节)
  • 指令解码(ID): •解码指令。 •读取寄存器。 •对寄存器内容进行相等性测试。 •通过向递增的PC添加偏移量,计算可能的分支目标地址。 •如果相等性测试为真,且指令解码为分支指令,则将分支目标地址加载到PC中。 请注意,如果结果可以保存在独立的寄存器中,那么所有这些都可以并行完成,并且大部分结果很可能被证明是浪费的工作,这会消耗电源和硬件,但不会增加所需的时间
  • 执行(EX): •对于内存引用,添加基址寄存器和偏移量以创建有效地址。 •对于RR指令,对从寄存器读取的内容执行操作。 •对于RI指令,对R1和立即数的内容进行操作
  • 内存(MEM): •如果指令为加载,则从有效地址读取。 •如果指令是存储器,则从寄存器写入有效地址。 二,
  • 回写(WB): •对于RR或RI指令,将结果写回寄存器。 •对于load指令,将提取的内存内容放入寄存器
  • 这是我的密码:

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.util.ArrayList;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            ArrayList<String> file = new ArrayList<String>();
            file = getAssembly(read(args[0]));
            for (int i = 0; i < file.size(); ++i) {
                System.out.println(file.get(i));
            }
        }
    
        public static ArrayList<String> read(String filepath) throws Exception {
            ArrayList<String> result = new ArrayList<String>();
            File file = new File(filepath);
            BufferedReader br = new BufferedReader(new FileReader(file));
            String st = "";
            while ((st = br.readLine()) != null) {
                result.add(st);
            }
            br.close();
            return result;
        }
    
        public static ArrayList<String> getAssembly(ArrayList<String> input){
            ArrayList<String> result = new ArrayList<String>();
            for (int i = 0; i < input.size(); ++i) {
                if (!input.get(i).contains(".") || input.get(i).contains("#") || input.get(i).contains("\t")) {
                    result.add(input.get(i));
                }
            }
            return result;
        }
    }
    
    导入java.io.BufferedReader;
    导入java.io.File;
    导入java.io.FileReader;
    导入java.util.ArrayList;
    公共班机{
    公共静态void main(字符串[]args)引发异常{
    ArrayList文件=新的ArrayList();
    file=getAssembly(读取(args[0]);
    对于(int i=0;i
    像这样。。。这是什么?“this”应该是指向示例的链接吗?我想在编译代码后使我的输出看起来像这样。很抱歉,我找到了指向输出示例的链接列表右侧的5列是计划?这五列中的数字代表什么?这些都是IF、ID、EX、MEM和WB为每条指令运行的时间。