|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectcodeGeneration.CgenSupport
public class CgenSupport
This class aggregates all kinds of support routines and constants for the code generator; all routines are statics, so no instance of this class is even created.
Field Summary | |
---|---|
static java.lang.String |
A1
|
static java.lang.String |
ACC
|
static java.lang.String |
ADD
|
static java.lang.String |
ADDI
|
static java.lang.String |
ADDIU
|
static java.lang.String |
ADDU
|
static java.lang.String |
ALIGN
|
static java.lang.String |
BEQ
|
static java.lang.String |
BEQZ
|
static java.lang.String |
BGT
|
static java.lang.String |
BLEQ
|
static java.lang.String |
BLT
|
static java.lang.String |
BNE
|
static int |
BOOL_SLOTS
|
static java.lang.String |
BOOLCONST_PREFIX
|
static java.lang.String |
BOOLTAG
|
static java.lang.String |
BRANCH
|
static java.lang.String |
CLASSINIT_SUFFIX
|
static java.lang.String |
CLASSNAMETAB
|
static java.lang.String |
CLASSOBJTAB
|
static int |
DEFAULT_OBJFIELDS
|
static java.lang.String |
DISPTAB_SUFFIX
|
static int |
DISPTABLE_OFFSET
|
static java.lang.String |
DIV
|
static int |
EMPTYSLOT
|
static java.lang.String |
FP
|
static java.lang.String[] |
gcCollectNames
Runtime constants for controlling the garbage collector. |
static java.lang.String[] |
gcInitNames
Runtime constants for controlling the garbage collector. |
static java.lang.String |
GLOBAL
|
static java.lang.String |
HEAP_START
|
static int |
INT_SLOTS
|
static java.lang.String |
INTCONST_PREFIX
|
static java.lang.String |
INTTAG
|
static java.lang.String |
JAL
|
static java.lang.String |
JALR
|
static java.lang.String |
LA
|
static java.lang.String |
LABEL
|
static java.lang.String |
LI
|
static int |
LOG_WORD_SIZE
|
static java.lang.String |
LW
|
static int |
MAXINT
|
static java.lang.String |
METHOD_SEP
|
static java.lang.String |
MOVE
|
static java.lang.String |
MUL
|
static java.lang.String |
NEG
|
static java.lang.String |
OBJECTPROTOBJ
|
static java.lang.String |
PROTOBJ_SUFFIX
|
static java.lang.String |
RA
|
static java.lang.String |
RET
|
static java.lang.String |
SELF
|
static int |
SIZE_OFFSET
|
static java.lang.String |
SLL
|
static java.lang.String |
SP
|
static java.lang.String |
STRCONST_PREFIX
|
static int |
STRING_SLOTS
|
static java.lang.String |
STRINGTAG
|
static java.lang.String |
SUB
|
static java.lang.String |
SW
|
static java.lang.String |
T1
|
static java.lang.String |
T2
|
static java.lang.String |
T3
|
static int |
TAG_OFFSET
|
static java.lang.String |
WORD
|
static int |
WORD_SIZE
|
static java.lang.String |
ZERO
|
Constructor Summary | |
---|---|
CgenSupport()
|
Method Summary | |
---|---|
static void |
asciiMode(java.io.PrintWriter s)
Switch output mode to ASCII. |
static void |
byteMode(java.io.PrintWriter s)
Switch output mode to BYTE |
static void |
emitAdd(java.lang.String dest_reg,
java.lang.String src1,
java.lang.String src2,
java.io.PrintWriter s)
Emits an ADD instruction. |
static void |
emitAddiu(java.lang.String dest_reg,
java.lang.String src,
int imm,
java.io.PrintWriter s)
Emits an ADDIU instruction. |
static void |
emitAddu(java.lang.String dest_reg,
java.lang.String src1,
java.lang.String src2,
java.io.PrintWriter s)
Emits an ADDU instruction. |
static void |
emitBeq(java.lang.String src1,
java.lang.String src2,
int label,
java.io.PrintWriter s)
Emits a BEQ instruction. |
static void |
emitBeqz(java.lang.String src,
int label,
java.io.PrintWriter s)
Emits a BEQZ instruction. |
static void |
emitBgti(java.lang.String src,
int imm,
int label,
java.io.PrintWriter s)
Emits a BGTI instruction. |
static void |
emitBleq(java.lang.String src1,
java.lang.String src2,
int label,
java.io.PrintWriter s)
Emits a BLEQ instruction. |
static void |
emitBlt(java.lang.String src1,
java.lang.String src2,
int label,
java.io.PrintWriter s)
Emits a BLT instruction. |
static void |
emitBlti(java.lang.String src,
int imm,
int label,
java.io.PrintWriter s)
Emits a BLTI instruction. |
static void |
emitBne(java.lang.String src1,
java.lang.String src2,
int label,
java.io.PrintWriter s)
Emits a BNE instruction. |
static void |
emitBranch(int label,
java.io.PrintWriter s)
Emits a BRANCH instruction. |
static void |
emitDispTableRef(AbstractSymbol sym,
java.io.PrintWriter s)
Emits a reference to dispatch table. |
static void |
emitDiv(java.lang.String dest_reg,
java.lang.String src1,
java.lang.String src2,
java.io.PrintWriter s)
Emits a DIV instruction. |
static void |
emitFetchInt(java.lang.String dest,
java.lang.String source,
java.io.PrintWriter s)
Emits code to fetch the integer value of the Integer object. |
static void |
emitGCAssign(java.io.PrintWriter s)
Emits a call to gc_assign. |
static void |
emitGCCheck(java.lang.String source,
java.io.PrintWriter s)
Emits code to check the garbage collector |
static void |
emitInitRef(AbstractSymbol sym,
java.io.PrintWriter s)
Emits a reference to class' init() method. |
static void |
emitJal(java.lang.String dest,
java.io.PrintWriter s)
Emits a JAL instruction. |
static void |
emitJalr(java.lang.String dest_reg,
java.io.PrintWriter s)
Emits a JALR instruction. |
static void |
emitLabelDef(int label,
java.io.PrintWriter s)
Emits a definition of a label |
static void |
emitLabelRef(int label,
java.io.PrintWriter s)
Emits a reference to a label |
static void |
emitLoad(java.lang.String dest_reg,
int offset,
java.lang.String source_reg,
java.io.PrintWriter s)
Emits an LW instruction. |
static void |
emitLoadAddress(java.lang.String dest_reg,
java.lang.String address,
java.io.PrintWriter s)
Emits an LA instruction. |
static void |
emitLoadBool(java.lang.String dest_reg,
BoolConst b,
java.io.PrintWriter s)
Emits an instruction to load a boolean constant into a register. |
static void |
emitLoadImm(java.lang.String dest_reg,
int val,
java.io.PrintWriter s)
Emits the LI instruction. |
static void |
emitLoadInt(java.lang.String dest_reg,
IntSymbol i,
java.io.PrintWriter s)
Emits an instruction to load an integer constant into a register. |
static void |
emitLoadString(java.lang.String dest_reg,
StringSymbol str,
java.io.PrintWriter s)
Emits an instruction to load a string constant into a register. |
static void |
emitMethodRef(AbstractSymbol classname,
AbstractSymbol methodname,
java.io.PrintWriter s)
Emits a reference to a method in a class |
static void |
emitMove(java.lang.String dest_reg,
java.lang.String source_reg,
java.io.PrintWriter s)
Emits a MOVE instruction. |
static void |
emitMul(java.lang.String dest_reg,
java.lang.String src1,
java.lang.String src2,
java.io.PrintWriter s)
Emits a MUL instruction. |
static void |
emitNeg(java.lang.String dest_reg,
java.lang.String source_reg,
java.io.PrintWriter s)
Emits a NEG instruction. |
static void |
emitPartialLoadAddress(java.lang.String dest_reg,
java.io.PrintWriter s)
Emits an LA instruction without the address part. |
static void |
emitProtObjRef(AbstractSymbol sym,
java.io.PrintWriter s)
Emits a reference to class' prototype object. |
static void |
emitPush(java.lang.String reg,
java.io.PrintWriter s)
Emit a sequence of instructions to push a register onto stack. |
static void |
emitReturn(java.io.PrintWriter s)
Emits a RET instruction. |
static void |
emitSll(java.lang.String dest_reg,
java.lang.String src1,
int num,
java.io.PrintWriter s)
Emits an SLL instruction. |
static void |
emitStore(java.lang.String source_reg,
int offset,
java.lang.String dest_reg,
java.io.PrintWriter s)
Emits an SW instruction. |
static void |
emitStoreInt(java.lang.String source,
java.lang.String dest,
java.io.PrintWriter s)
Emits code to store the integer value of the Integer object. |
static void |
emitStringConstant(java.lang.String str,
java.io.PrintWriter s)
Emits a string constant. |
static void |
emitSub(java.lang.String dest_reg,
java.lang.String src1,
java.lang.String src2,
java.io.PrintWriter s)
Emits a SUB instruction. |
static void |
emitTestCollector(java.io.PrintWriter s)
Emits code to manipulate garbage collector |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String[] gcInitNames
public static final java.lang.String[] gcCollectNames
public static final int MAXINT
public static final int WORD_SIZE
public static final int LOG_WORD_SIZE
public static final java.lang.String CLASSNAMETAB
public static final java.lang.String CLASSOBJTAB
public static final java.lang.String INTTAG
public static final java.lang.String BOOLTAG
public static final java.lang.String STRINGTAG
public static final java.lang.String HEAP_START
public static final java.lang.String DISPTAB_SUFFIX
public static final java.lang.String METHOD_SEP
public static final java.lang.String CLASSINIT_SUFFIX
public static final java.lang.String PROTOBJ_SUFFIX
public static final java.lang.String OBJECTPROTOBJ
public static final java.lang.String INTCONST_PREFIX
public static final java.lang.String STRCONST_PREFIX
public static final java.lang.String BOOLCONST_PREFIX
public static final int EMPTYSLOT
public static final java.lang.String LABEL
public static final int DEFAULT_OBJFIELDS
public static final int TAG_OFFSET
public static final int SIZE_OFFSET
public static final int DISPTABLE_OFFSET
public static final int STRING_SLOTS
public static final int INT_SLOTS
public static final int BOOL_SLOTS
public static final java.lang.String GLOBAL
public static final java.lang.String ALIGN
public static final java.lang.String WORD
public static final java.lang.String ZERO
public static final java.lang.String ACC
public static final java.lang.String A1
public static final java.lang.String SELF
public static final java.lang.String T1
public static final java.lang.String T2
public static final java.lang.String T3
public static final java.lang.String SP
public static final java.lang.String FP
public static final java.lang.String RA
public static final java.lang.String JALR
public static final java.lang.String JAL
public static final java.lang.String RET
public static final java.lang.String SW
public static final java.lang.String LW
public static final java.lang.String LI
public static final java.lang.String LA
public static final java.lang.String MOVE
public static final java.lang.String NEG
public static final java.lang.String ADD
public static final java.lang.String ADDI
public static final java.lang.String ADDU
public static final java.lang.String ADDIU
public static final java.lang.String DIV
public static final java.lang.String MUL
public static final java.lang.String SUB
public static final java.lang.String SLL
public static final java.lang.String BEQZ
public static final java.lang.String BRANCH
public static final java.lang.String BEQ
public static final java.lang.String BNE
public static final java.lang.String BLEQ
public static final java.lang.String BLT
public static final java.lang.String BGT
Constructor Detail |
---|
public CgenSupport()
Method Detail |
---|
public static void emitLoad(java.lang.String dest_reg, int offset, java.lang.String source_reg, java.io.PrintWriter s)
dest_reg
- the destination registeroffset
- the word offset from source registersource_reg
- the source registers
- the output streampublic static void emitStore(java.lang.String source_reg, int offset, java.lang.String dest_reg, java.io.PrintWriter s)
dest_reg
- the destination registeroffset
- the word offset from source registersource_reg
- the source registers
- the output streampublic static void emitLoadImm(java.lang.String dest_reg, int val, java.io.PrintWriter s)
dest_reg
- the destination registerval
- the integer values
- the output streampublic static void emitLoadAddress(java.lang.String dest_reg, java.lang.String address, java.io.PrintWriter s)
dest_reg
- the destination registeraddress
- the address from which a word is loadeds
- the output streampublic static void emitPartialLoadAddress(java.lang.String dest_reg, java.io.PrintWriter s)
dest_reg
- the destination registers
- the output streampublic static void emitLoadBool(java.lang.String dest_reg, BoolConst b, java.io.PrintWriter s)
dest_reg
- the destination registerb
- the boolean constants
- the output streampublic static void emitLoadString(java.lang.String dest_reg, StringSymbol str, java.io.PrintWriter s)
dest_reg
- the destination registerstr
- the string constants
- the output streampublic static void emitLoadInt(java.lang.String dest_reg, IntSymbol i, java.io.PrintWriter s)
dest_reg
- the destination registeri
- the integer constants
- the output streampublic static void emitMove(java.lang.String dest_reg, java.lang.String source_reg, java.io.PrintWriter s)
dest_reg
- the destination registersource_reg
- the source registers
- the output streampublic static void emitNeg(java.lang.String dest_reg, java.lang.String source_reg, java.io.PrintWriter s)
dest_reg
- the destination registersource_reg
- the source registers
- the output streampublic static void emitAdd(java.lang.String dest_reg, java.lang.String src1, java.lang.String src2, java.io.PrintWriter s)
dest_reg
- the destination registersrc1
- the source register 1src2
- the source register 2s
- the output streampublic static void emitAddu(java.lang.String dest_reg, java.lang.String src1, java.lang.String src2, java.io.PrintWriter s)
dest_reg
- the destination registersrc1
- the source register 1src2
- the source register 2s
- the output streampublic static void emitAddiu(java.lang.String dest_reg, java.lang.String src, int imm, java.io.PrintWriter s)
dest_reg
- the destination registersrc
- the source registerimm
- the immediates
- the output streampublic static void emitDiv(java.lang.String dest_reg, java.lang.String src1, java.lang.String src2, java.io.PrintWriter s)
dest_reg
- the destination registersrc1
- the source register 1src2
- the source register 2s
- the output streampublic static void emitMul(java.lang.String dest_reg, java.lang.String src1, java.lang.String src2, java.io.PrintWriter s)
dest_reg
- the destination registersrc1
- the source register 1src2
- the source register 2s
- the output streampublic static void emitSub(java.lang.String dest_reg, java.lang.String src1, java.lang.String src2, java.io.PrintWriter s)
dest_reg
- the destination registersrc1
- the source register 1src2
- the source register 2s
- the output streampublic static void emitSll(java.lang.String dest_reg, java.lang.String src1, int num, java.io.PrintWriter s)
dest_reg
- the destination registersrc1
- the source register 1num
- the number of bits to shifts
- the output streampublic static void emitJalr(java.lang.String dest_reg, java.io.PrintWriter s)
dest_reg
- the register with target addresss
- the output streampublic static void emitJal(java.lang.String dest, java.io.PrintWriter s)
dest
- the target address or labels
- the output streampublic static void emitReturn(java.io.PrintWriter s)
s
- the output streampublic static void emitGCAssign(java.io.PrintWriter s)
s
- the output streampublic static void emitDispTableRef(AbstractSymbol sym, java.io.PrintWriter s)
sym
- the name of the classs
- the output streampublic static void emitInitRef(AbstractSymbol sym, java.io.PrintWriter s)
sym
- the name of the classs
- the output streampublic static void emitProtObjRef(AbstractSymbol sym, java.io.PrintWriter s)
sym
- the name of the classs
- the output streampublic static void emitMethodRef(AbstractSymbol classname, AbstractSymbol methodname, java.io.PrintWriter s)
classname
- the name of the classmethodname
- the name of the methods
- the output streampublic static void emitLabelRef(int label, java.io.PrintWriter s)
label
- the label numbers
- the output streampublic static void emitLabelDef(int label, java.io.PrintWriter s)
label
- the label numbers
- the output streampublic static void emitBeqz(java.lang.String src, int label, java.io.PrintWriter s)
src
- the source registerlabel
- the label numbers
- the output streampublic static void emitBeq(java.lang.String src1, java.lang.String src2, int label, java.io.PrintWriter s)
src1
- the source register 1src2
- the source register 2label
- the label numbers
- the output streampublic static void emitBne(java.lang.String src1, java.lang.String src2, int label, java.io.PrintWriter s)
src1
- the source register 1src2
- the source register 2label
- the label numbers
- the output streampublic static void emitBleq(java.lang.String src1, java.lang.String src2, int label, java.io.PrintWriter s)
src1
- the source register 1src2
- the source register 2label
- the label numbers
- the output streampublic static void emitBlt(java.lang.String src1, java.lang.String src2, int label, java.io.PrintWriter s)
src1
- the source register 1src2
- the source register 2label
- the label numbers
- the output streampublic static void emitBlti(java.lang.String src, int imm, int label, java.io.PrintWriter s)
src
- the source registerimm
- the immediatelabel
- the label numbers
- the output streampublic static void emitBgti(java.lang.String src, int imm, int label, java.io.PrintWriter s)
src
- the source registerimm
- the immediatelabel
- the label numbers
- the output streampublic static void emitBranch(int label, java.io.PrintWriter s)
label
- the label numbers
- the output streampublic static void emitPush(java.lang.String reg, java.io.PrintWriter s)
reg
- the registers
- the output streampublic static void emitFetchInt(java.lang.String dest, java.lang.String source, java.io.PrintWriter s)
source
- a pointer to the Integer objectdest
- the destination register for the values
- the output streampublic static void emitStoreInt(java.lang.String source, java.lang.String dest, java.io.PrintWriter s)
source
- an integer valuedest
- the pointer to an Integer objects
- the output streampublic static void emitTestCollector(java.io.PrintWriter s)
s
- the output streampublic static void emitGCCheck(java.lang.String source, java.io.PrintWriter s)
s
- the output streampublic static void asciiMode(java.io.PrintWriter s)
s
- the output streampublic static void byteMode(java.io.PrintWriter s)
s
- the output streampublic static void emitStringConstant(java.lang.String str, java.io.PrintWriter s)
str
- the string constants
- the output stream
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |