hades.models.pic
Class PicDecode

java.lang.Object
  extended byhades.models.pic.PicDecode

public class PicDecode
extends java.lang.Object

PicDecode - Decode instruction. Just split the instruction word into pieces for the different units.

Currently, all fields are decoded for all instructions. Profiling shows that this is not a performance problem.

This class also contains some disassembler support. To disassemble an instruction, first call decode( opcode ), then disassamble().


Field Summary
static int ADDLW
           
static int ADDWF
           
static int ALUACTION
          The four different instruction types
static int ANDLW
           
static int ANDWF
           
static java.lang.String[] bank0Names
           
static java.lang.String[] bank1Names
           
static int BCF
           
static int BITACTION
           
static int BSF
           
static int BTFSC
           
static int BTFSS
           
static int CALL
           
static int CLRF
           
static int CLRW
           
static int CLRWDT
           
static int COMF
           
static int DECF
           
static int DECFSZ
           
static int GOTO
           
static int INCF
           
static int INCFSZ
           
static int IORLW
           
static int IORWF
           
static int JUMPACTION
           
static int LITERALACTION
           
static int MOVF
           
static int MOVLW
           
static int MOVWF
           
static int NOP
           
static int RETFIE
           
static int RETLW
           
static int RETURN
           
static int RLF
           
static int RRF
           
static int SLEEP
           
static int SUBLW
           
static int SUBWF
           
static int SWAPF
           
static int XORLW
           
static int XORWF
           
 
Constructor Summary
PicDecode(PicByteReg _statusReg)
          Constructor, do reset
 
Method Summary
 void decode(int word)
          decode splits the given instruction into the needed parts
 java.lang.String disassemble()
          convert the current instruction into a Microchip assembler notation.
 java.lang.String disassembleAluInstruction()
           
 java.lang.String disassembleBitInstruction()
           
 java.lang.String disassembleJumpInstruction()
           
 java.lang.String disassembleLiteralInstruction()
           
 void dump(java.io.PrintStream out)
          Write everything
 int getAddress()
          Get address for absolute addressing
 int getAluOperation()
          Get ALU-operation
 int getBitNumber()
          Get bitNumber for bit operations
 int getBitOperation()
          Get Bit-operation
 int getDecoded()
          Get the word that was decoded last
 int getDestination()
          Get ALU-destination
 int getInstruction()
          Get instruction for further decode
 int getJumpOperation()
          Get Jump-operation
 java.lang.String getJumpTarget()
           
 int getLiteral()
          Get literal for literal operations
 int getRegister()
          Get register-number for register operations
 void por()
           
 void reset()
          Reset, init with NOP
 void setEprom(PicEprom _eprom)
           
 int splitWord(int word, int lsb, int size)
          Get a part of a word, beginning with lsb and size bits
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ALUACTION

public static final int ALUACTION
The four different instruction types

See Also:
Constant Field Values

BITACTION

public static final int BITACTION
See Also:
Constant Field Values

JUMPACTION

public static final int JUMPACTION
See Also:
Constant Field Values

LITERALACTION

public static final int LITERALACTION
See Also:
Constant Field Values

NOP

public static final int NOP
See Also:
Constant Field Values

RETURN

public static final int RETURN
See Also:
Constant Field Values

RETFIE

public static final int RETFIE
See Also:
Constant Field Values

SLEEP

public static final int SLEEP
See Also:
Constant Field Values

CLRWDT

public static final int CLRWDT
See Also:
Constant Field Values

MOVWF

public static final int MOVWF
See Also:
Constant Field Values

CLRW

public static final int CLRW
See Also:
Constant Field Values

CLRF

public static final int CLRF
See Also:
Constant Field Values

SUBWF

public static final int SUBWF
See Also:
Constant Field Values

DECF

public static final int DECF
See Also:
Constant Field Values

IORWF

public static final int IORWF
See Also:
Constant Field Values

ANDWF

public static final int ANDWF
See Also:
Constant Field Values

XORWF

public static final int XORWF
See Also:
Constant Field Values

ADDWF

public static final int ADDWF
See Also:
Constant Field Values

MOVF

public static final int MOVF
See Also:
Constant Field Values

COMF

public static final int COMF
See Also:
Constant Field Values

INCF

public static final int INCF
See Also:
Constant Field Values

DECFSZ

public static final int DECFSZ
See Also:
Constant Field Values

RRF

public static final int RRF
See Also:
Constant Field Values

RLF

public static final int RLF
See Also:
Constant Field Values

SWAPF

public static final int SWAPF
See Also:
Constant Field Values

INCFSZ

public static final int INCFSZ
See Also:
Constant Field Values

BCF

public static final int BCF
See Also:
Constant Field Values

BSF

public static final int BSF
See Also:
Constant Field Values

BTFSC

public static final int BTFSC
See Also:
Constant Field Values

BTFSS

public static final int BTFSS
See Also:
Constant Field Values

CALL

public static final int CALL
See Also:
Constant Field Values

GOTO

public static final int GOTO
See Also:
Constant Field Values

MOVLW

public static final int MOVLW
See Also:
Constant Field Values

RETLW

public static final int RETLW
See Also:
Constant Field Values

IORLW

public static final int IORLW
See Also:
Constant Field Values

ANDLW

public static final int ANDLW
See Also:
Constant Field Values

XORLW

public static final int XORLW
See Also:
Constant Field Values

SUBLW

public static final int SUBLW
See Also:
Constant Field Values

ADDLW

public static final int ADDLW
See Also:
Constant Field Values

bank0Names

public static final java.lang.String[] bank0Names

bank1Names

public static final java.lang.String[] bank1Names
Constructor Detail

PicDecode

public PicDecode(PicByteReg _statusReg)
Constructor, do reset

Method Detail

setEprom

public void setEprom(PicEprom _eprom)

por

public void por()

reset

public void reset()
Reset, init with NOP


splitWord

public int splitWord(int word,
                     int lsb,
                     int size)
Get a part of a word, beginning with lsb and size bits


decode

public void decode(int word)
decode splits the given instruction into the needed parts


getDecoded

public int getDecoded()
Get the word that was decoded last


getRegister

public int getRegister()
Get register-number for register operations


getDestination

public int getDestination()
Get ALU-destination


getBitNumber

public int getBitNumber()
Get bitNumber for bit operations


getLiteral

public int getLiteral()
Get literal for literal operations


getAddress

public int getAddress()
Get address for absolute addressing


getInstruction

public int getInstruction()
Get instruction for further decode


getAluOperation

public int getAluOperation()
Get ALU-operation


getBitOperation

public int getBitOperation()
Get Bit-operation


getJumpOperation

public int getJumpOperation()
Get Jump-operation


dump

public void dump(java.io.PrintStream out)
Write everything


disassemble

public java.lang.String disassemble()
convert the current instruction into a Microchip assembler notation.


disassembleAluInstruction

public java.lang.String disassembleAluInstruction()

disassembleBitInstruction

public java.lang.String disassembleBitInstruction()

disassembleJumpInstruction

public java.lang.String disassembleJumpInstruction()

getJumpTarget

public java.lang.String getJumpTarget()

disassembleLiteralInstruction

public java.lang.String disassembleLiteralInstruction()