• 大小: 28KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-21
  • 语言: Java
  • 标签: Tomasulo  

资源简介

Tomasulo算法的Java实现,附带ROB,可顺序提交。

资源截图

代码片段和文件信息

//请根据你的包路径修改
//package ustc.qyq;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.Reader;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EtchedBorder;

/**
 * @author yanqing.qyq 2012-2015@USTC
 * 模板说明:该模板主要提供依赖Swing组件提供的JPanle,Jframe,JButton等提供的GUI。使用“监听器”模式监听各个Button的事件,从而根据具体事件执行不同方法。
 * Tomasulo算法核心需同学们自行完成,见说明(4)
 * 对于界面必须修改部分,见说明(1)(2)(3)
 *
 *  (1)说明:根据你的设计完善指令设置中的下拉框内容
 * (2)说明:请根据你的设计指定各个面板(指令状态,保留站,Load部件,寄存器部件)的大小
 * (3)说明:设置界面默认指令
 * (4)说明: Tomasulo算法实现
 */

public class Tomasulo extends Jframe implements ActionListener{
/*
 * 界面上有六个面板:
 * panel1 : 指令设置
 * panel2 : 执行时间设置
 * panel3 : 指令状态
 * panel4 : 保留站状态
 * panel5 : Load部件
 * panel6 : 寄存器状态
 */
private JPanel panel1panel2panel3panel4panel5panel6;

/*
 * 四个操作按钮:步进,进5步,重置,执行
 */
private JButton stepbutstep5butresetbutstartbut;

/*
 * 指令选择框
 */
private JComboBox instbox[]=new JComboBox[24];

/*
 * 每个面板的名称
 */
private JLabel instl timel tl1tl2tl3tl4reslreglldlinslstepsl;
private int time[]=new int[4];
private int rt[]=new int[6];

/*
 * 部件执行时间的输入框
 */
private JTextField tt1tt2tt3tt4;

private int intv[][]=new int[6][4]cnowinstnow=0;
private int rob[][]={{-100-1}{-100-1}{-100-1}{-100-1}{-100-1}{-100-1}};//6X4
//private int ld[][]={{00}{00}{00}};
private int ld[]={-1-1-1};
private int ff[]={00000000000000000};//16 for Fx

/*
 * (1)说明:根据你的设计完善指令设置中的下拉框内容
 * inst: 指令下拉框内容:“NOP““L.D““ADD.D““SUB.D““MULT.D““DIV.D“…………
 * fx:       目的寄存器下拉框内容:“F0““F2““F4““F6““F8“ …………
 * rx:       源操作数寄存器内容:“R0““R1““R2““R3““R4““R5““R6““R7““R8““R9“ …………
 * ix:       立即数下拉框内容:“0““1““2““3““4““5““6““7““8““9“ …………
 */
private String  inst[]={“NOP““L.D““ADD.D““SUB.D““MULT.D““DIV.D“}
fx[]={“F0““F2““F4““F6““F8““F10““F12““F14““F16““F18““F20““F22““F24““F26““F28““F30“}
rx[]={“R0““R1““R2““R3““R4““R5““R6“}
ix[]={“0““1““2““3““4““5““6““7““8““9““10““11““12““13““14““15““16““17““18““19““20““21“};

/*
 * (2)说明:请根据你的设计指定各个面板(指令状态,保留站,Load部件,寄存器部件)的大小
 *  指令状态 面板
 *  保留站 面板
 *  Load部件 面板
 *  寄存器 面板
 *  的大小
 */
private String  instst[][]=new String[7][5] resst[][]=new

评论

共有 条评论