JIMSCore
Class InstructionExecuter

java.lang.Object
  |
  +--JIMSCore.InstructionExecuter

public class InstructionExecuter
extends java.lang.Object


Field Summary
private  boolean bInvalidOpcodeDetected
           
private static int ERR_BREAK
           
private static int ERR_FP_EXCEPTION
           
private static int ERR_FP_HARDWARE_REQUIRED
           
private static int ERR_INVALID_OPCODE
           
private static int ERR_NONE
           
private static int ERR_OVERFLOW
           
private static int ERR_SYSCALL
           
static int FP_D
           
static int FP_S
           
private  int iExecuteResult
           
static int OP_ABS_F
           
static int OP_ADD
           
static int OP_ADD_F
           
static int OP_ADDI
           
static int OP_ADDIU
           
static int OP_ADDU
           
static int OP_AND
           
static int OP_ANDI
           
static int OP_BEQ
           
static int OP_BGEZ
           
static int OP_BGEZAL
           
static int OP_BGTZ
           
static int OP_BLEZ
           
static int OP_BLTZ
           
static int OP_BLTZAL
           
static int OP_BNE
           
static int OP_BREAK
           
static int OP_C_EQ_F
           
static int OP_C_F_F
           
static int OP_C_LE_F
           
static int OP_C_LT_F
           
static int OP_C_NGE_F
           
static int OP_C_NGL_F
           
static int OP_C_NGLE_F
           
static int OP_C_NGT_F
           
static int OP_C_OLE_F
           
static int OP_C_OLT_F
           
static int OP_C_SEQ_F
           
static int OP_C_ST_F
           
static int OP_C_UEQ_F
           
static int OP_C_ULE_F
           
static int OP_C_ULT_F
           
static int OP_C_UN_F
           
static int OP_CFCZ
           
static int OP_COPZ_1
           
static int OP_COPZ_2
           
static int OP_CTCZ
           
static int OP_CVT_D_F
           
static int OP_CVT_S_F
           
static int OP_CVT_W_F
           
static int OP_DIV
           
static int OP_DIV_F
           
static int OP_DIVU
           
static int OP_J
           
static int OP_JAL
           
static int OP_JALR
           
static int OP_JR
           
static int OP_LB
           
static int OP_LBU
           
static int OP_LH
           
static int OP_LHU
           
static int OP_LUI
           
static int OP_LW
           
static int OP_LWC0
           
static int OP_LWC1
           
static int OP_LWC2
           
static int OP_LWC3
           
static int OP_LWL
           
static int OP_LWR
           
static int OP_MFCZ
           
static int OP_MFHI
           
static int OP_MFLO
           
static int OP_MOV_F
           
static int OP_MTCZ
           
static int OP_MTHI
           
static int OP_MTLO
           
static int OP_MUL_F
           
static int OP_MULT
           
static int OP_MULTI_1
           
static int OP_MULTI_2
           
static int OP_MULTI_3
           
static int OP_MULTI_4
           
static int OP_MULTI_5
           
static int OP_MULTI_6
           
static int OP_MULTI_7
           
static int OP_MULTU
           
static int OP_NEG_F
           
static int OP_NOR
           
static int OP_OR
           
static int OP_ORI
           
static int OP_RFE
           
static int OP_SB
           
static int OP_SH
           
static int OP_SLL
           
static int OP_SLLV
           
static int OP_SLT
           
static int OP_SLTI
           
static int OP_SLTIU
           
static int OP_SLTU
           
static int OP_SRA
           
static int OP_SRAV
           
static int OP_SRL
           
static int OP_SRLV
           
static int OP_SUB
           
static int OP_SUB_F
           
static int OP_SUBU
           
static int OP_SW
           
static int OP_SWC0
           
static int OP_SWC1
           
static int OP_SWC2
           
static int OP_SWC3
           
static int OP_SWL
           
static int OP_SWR
           
static int OP_SYSCALL
           
static int OP_TLBP
           
static int OP_TLBR
           
static int OP_TLBWL
           
static int OP_TLBWR
           
static int OP_XOR
           
static int OP_XORI
           
static int SC_EXIT
           
static int SC_PRINT_DOUBLE
           
static int SC_PRINT_FLOAT
           
static int SC_PRINT_INT
           
static int SC_PRINT_STRING
           
static int SC_READ_DOUBLE
           
static int SC_READ_FLOAT
           
static int SC_READ_INT
           
static int SC_READ_STRING
           
static int SC_SBRK
           
private  Simulator simulator
           
private  State state
           
private  StateHistoryBuffer stateHistoryBuffer
           
static int UNDEFINED_DIVIDE
           
 
Constructor Summary
InstructionExecuter(StateHistoryBuffer stateHistoryBuffer, Simulator simulator)
           
 
Method Summary
private  void execute(InstructionDecodeBuffer db)
           
private  void executeFPDInstruction(InstructionDecodeBuffer db)
           
private  void executeFPInstruction(InstructionDecodeBuffer db, int fpType)
           
private  void executeFPSInstruction(InstructionDecodeBuffer db)
           
private  void executeMiscInstruction(InstructionDecodeBuffer db)
           
private  void executeMulti1Instruction(InstructionDecodeBuffer db)
           
private  void executeMulti2Instruction(InstructionDecodeBuffer db)
           
private  void executeMultiZInstruction(InstructionDecodeBuffer db, int z)
           
 int iExecute(InstructionDecodeBuffer db)
           
private  void performSystemCall(int iService)
           
 void status(java.lang.String sMessage)
           
private  void unknownOpcode()
           
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

SC_PRINT_INT

public static final int SC_PRINT_INT

SC_PRINT_FLOAT

public static final int SC_PRINT_FLOAT

SC_PRINT_DOUBLE

public static final int SC_PRINT_DOUBLE

SC_PRINT_STRING

public static final int SC_PRINT_STRING

SC_READ_INT

public static final int SC_READ_INT

SC_READ_FLOAT

public static final int SC_READ_FLOAT

SC_READ_DOUBLE

public static final int SC_READ_DOUBLE

SC_READ_STRING

public static final int SC_READ_STRING

SC_SBRK

public static final int SC_SBRK

SC_EXIT

public static final int SC_EXIT

OP_MULTI_1

public static final int OP_MULTI_1

OP_MULTI_2

public static final int OP_MULTI_2

OP_J

public static final int OP_J

OP_JAL

public static final int OP_JAL

OP_BEQ

public static final int OP_BEQ

OP_BNE

public static final int OP_BNE

OP_BLEZ

public static final int OP_BLEZ

OP_BGTZ

public static final int OP_BGTZ

OP_ADDI

public static final int OP_ADDI

OP_ADDIU

public static final int OP_ADDIU

OP_SLTI

public static final int OP_SLTI

OP_SLTIU

public static final int OP_SLTIU

OP_ANDI

public static final int OP_ANDI

OP_ORI

public static final int OP_ORI

OP_XORI

public static final int OP_XORI

OP_LUI

public static final int OP_LUI

OP_MULTI_3

public static final int OP_MULTI_3

OP_MULTI_4

public static final int OP_MULTI_4

OP_MULTI_5

public static final int OP_MULTI_5

OP_MULTI_6

public static final int OP_MULTI_6

OP_LB

public static final int OP_LB

OP_LH

public static final int OP_LH

OP_LWL

public static final int OP_LWL

OP_LW

public static final int OP_LW

OP_LBU

public static final int OP_LBU

OP_LHU

public static final int OP_LHU

OP_LWR

public static final int OP_LWR

OP_SB

public static final int OP_SB

OP_SH

public static final int OP_SH

OP_SWL

public static final int OP_SWL

OP_SW

public static final int OP_SW

OP_SWR

public static final int OP_SWR

OP_LWC0

public static final int OP_LWC0

OP_LWC1

public static final int OP_LWC1

OP_LWC2

public static final int OP_LWC2

OP_LWC3

public static final int OP_LWC3

OP_SWC0

public static final int OP_SWC0

OP_SWC1

public static final int OP_SWC1

OP_SWC2

public static final int OP_SWC2

OP_SWC3

public static final int OP_SWC3

OP_SLL

public static final int OP_SLL

OP_SRL

public static final int OP_SRL

OP_SRA

public static final int OP_SRA

OP_SLLV

public static final int OP_SLLV

OP_SRLV

public static final int OP_SRLV

OP_SRAV

public static final int OP_SRAV

OP_JR

public static final int OP_JR

OP_JALR

public static final int OP_JALR

OP_SYSCALL

public static final int OP_SYSCALL

OP_BREAK

public static final int OP_BREAK

OP_MFHI

public static final int OP_MFHI

OP_MTHI

public static final int OP_MTHI

OP_MFLO

public static final int OP_MFLO

OP_MTLO

public static final int OP_MTLO

OP_MULT

public static final int OP_MULT

OP_MULTU

public static final int OP_MULTU

OP_DIV

public static final int OP_DIV

OP_DIVU

public static final int OP_DIVU

OP_ADD

public static final int OP_ADD

OP_ADDU

public static final int OP_ADDU

OP_SUB

public static final int OP_SUB

OP_SUBU

public static final int OP_SUBU

OP_AND

public static final int OP_AND

OP_OR

public static final int OP_OR

OP_XOR

public static final int OP_XOR

OP_NOR

public static final int OP_NOR

OP_SLT

public static final int OP_SLT

OP_SLTU

public static final int OP_SLTU

OP_BLTZ

public static final int OP_BLTZ

OP_BGEZ

public static final int OP_BGEZ

OP_BLTZAL

public static final int OP_BLTZAL

OP_BGEZAL

public static final int OP_BGEZAL

OP_MFCZ

public static final int OP_MFCZ

OP_CFCZ

public static final int OP_CFCZ

OP_MTCZ

public static final int OP_MTCZ

OP_CTCZ

public static final int OP_CTCZ

OP_MULTI_7

public static final int OP_MULTI_7

OP_COPZ_1

public static final int OP_COPZ_1

OP_COPZ_2

public static final int OP_COPZ_2

OP_TLBR

public static final int OP_TLBR

OP_TLBWL

public static final int OP_TLBWL

OP_TLBWR

public static final int OP_TLBWR

OP_TLBP

public static final int OP_TLBP

OP_RFE

public static final int OP_RFE

OP_ADD_F

public static final int OP_ADD_F

OP_SUB_F

public static final int OP_SUB_F

OP_MUL_F

public static final int OP_MUL_F

OP_DIV_F

public static final int OP_DIV_F

OP_ABS_F

public static final int OP_ABS_F

OP_MOV_F

public static final int OP_MOV_F

OP_NEG_F

public static final int OP_NEG_F

OP_CVT_S_F

public static final int OP_CVT_S_F

OP_CVT_D_F

public static final int OP_CVT_D_F

OP_CVT_W_F

public static final int OP_CVT_W_F

OP_C_F_F

public static final int OP_C_F_F

OP_C_UN_F

public static final int OP_C_UN_F

OP_C_EQ_F

public static final int OP_C_EQ_F

OP_C_UEQ_F

public static final int OP_C_UEQ_F

OP_C_OLT_F

public static final int OP_C_OLT_F

OP_C_ULT_F

public static final int OP_C_ULT_F

OP_C_OLE_F

public static final int OP_C_OLE_F

OP_C_ULE_F

public static final int OP_C_ULE_F

OP_C_ST_F

public static final int OP_C_ST_F

OP_C_NGLE_F

public static final int OP_C_NGLE_F

OP_C_SEQ_F

public static final int OP_C_SEQ_F

OP_C_NGL_F

public static final int OP_C_NGL_F

OP_C_LT_F

public static final int OP_C_LT_F

OP_C_NGE_F

public static final int OP_C_NGE_F

OP_C_LE_F

public static final int OP_C_LE_F

OP_C_NGT_F

public static final int OP_C_NGT_F

FP_S

public static final int FP_S

FP_D

public static final int FP_D

UNDEFINED_DIVIDE

public static final int UNDEFINED_DIVIDE

simulator

private Simulator simulator

state

private State state

stateHistoryBuffer

private StateHistoryBuffer stateHistoryBuffer

bInvalidOpcodeDetected

private boolean bInvalidOpcodeDetected

iExecuteResult

private int iExecuteResult

ERR_NONE

private static final int ERR_NONE

ERR_INVALID_OPCODE

private static final int ERR_INVALID_OPCODE

ERR_FP_HARDWARE_REQUIRED

private static final int ERR_FP_HARDWARE_REQUIRED

ERR_SYSCALL

private static final int ERR_SYSCALL

ERR_BREAK

private static final int ERR_BREAK

ERR_OVERFLOW

private static final int ERR_OVERFLOW

ERR_FP_EXCEPTION

private static final int ERR_FP_EXCEPTION
Constructor Detail

InstructionExecuter

public InstructionExecuter(StateHistoryBuffer stateHistoryBuffer,
                           Simulator simulator)
Method Detail

status

public void status(java.lang.String sMessage)

unknownOpcode

private void unknownOpcode()

iExecute

public int iExecute(InstructionDecodeBuffer db)

execute

private void execute(InstructionDecodeBuffer db)

executeMulti1Instruction

private void executeMulti1Instruction(InstructionDecodeBuffer db)

executeMulti2Instruction

private void executeMulti2Instruction(InstructionDecodeBuffer db)

executeMultiZInstruction

private void executeMultiZInstruction(InstructionDecodeBuffer db,
                                      int z)

executeMiscInstruction

private void executeMiscInstruction(InstructionDecodeBuffer db)

executeFPInstruction

private void executeFPInstruction(InstructionDecodeBuffer db,
                                  int fpType)

executeFPSInstruction

private void executeFPSInstruction(InstructionDecodeBuffer db)

executeFPDInstruction

private void executeFPDInstruction(InstructionDecodeBuffer db)

performSystemCall

private void performSystemCall(int iService)