|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcodegenmips.MipsSupport
public class MipsSupport
Mips assembly support create an object from this class for use in generating Mips code
| Field Summary | |
|---|---|
int |
SYSCALL_EXIT
Exit syscall |
int |
SYSCALL_FILE_CLOSE
File close syscall |
int |
SYSCALL_FILE_OPEN
File open syscall |
int |
SYSCALL_FILE_READ
File read syscall |
int |
SYSCALL_FILE_WRITE
File write syscall |
int |
SYSCALL_GET_TIME
Get time syscall |
int |
SYSCALL_SBRK
sbrk syscall |
| Constructor Summary | |
|---|---|
MipsSupport(java.io.PrintStream out)
MipsSupport constructor |
|
| Method Summary | |
|---|---|
void |
genAdd(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate an add instruction |
void |
genAdd(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate an add instruction |
void |
genAlign()
Generate word alignment directive |
void |
genAnd(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate an and instruction |
void |
genAnd(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate an and instruction |
void |
genAscii(java.lang.String ascii)
Generate an ASCII string (terminates with zero byte and aligns) |
void |
genByte(java.lang.String dataByte)
Generate a data byte |
void |
genComment(java.lang.String text)
Generate the code to start the data section |
void |
genCondBeq(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
Generate a conditional branch branches if first operand is equal to second operand |
void |
genCondBgeq(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
Generate a conditional branch branches if first operand is greater than or equal to second operand |
void |
genCondBgt(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
Generate a conditional branch branches if first operand is greater than second operand |
void |
genCondBleq(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
Generate a conditional branch branches if first operand is less than second operand |
void |
genCondBlt(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
Generate a conditional branch branches if first operand is less than or equal to second operand |
void |
genCondBne(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
Generate a conditional branch branches if first operand is not equal to second operand |
void |
genDataStart()
Generate the code to start the data section |
void |
genDirCall(java.lang.String label)
Generate a direct call |
void |
genDiv(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate a divide instruction |
void |
genDiv(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate a divide instruction |
void |
genGlobal(java.lang.String label)
Generate a global |
void |
genInDirCall(java.lang.String reg)
Generate an indirect call |
void |
genLabel(java.lang.String label)
Generate a reference label |
void |
genLoadAddr(java.lang.String destReg,
java.lang.String label)
Generate a load address instruction |
void |
genLoadByte(java.lang.String destReg,
int offset,
java.lang.String baseReg)
Generate a load byte instruction |
void |
genLoadImm(java.lang.String destReg,
int imm)
Generate a load immediate instruction |
void |
genLoadWord(java.lang.String destReg,
int offset,
java.lang.String baseReg)
Generate a load word instruction |
void |
genMod(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate a modulus instruction |
void |
genMod(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate a modulus instruction |
void |
genMove(java.lang.String destReg,
java.lang.String srcReg)
Generate a move instruction |
void |
genMul(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate a multiply instruction |
void |
genMul(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate a multiply instruction |
void |
genNeg(java.lang.String destReg,
java.lang.String srcReg)
Generate a negation instruction |
void |
genNot(java.lang.String destReg,
java.lang.String srcReg)
Generate a not instruction |
void |
genOr(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate an or instruction |
void |
genOr(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate an or instruction |
void |
genRetn()
Generate a return |
void |
genShiftLeft(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate a shift left instruction |
void |
genShiftLeft(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate a shift left instruction |
void |
genShiftRight(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate a shift right instruction |
void |
genShiftRight(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate a shift right instruction |
void |
genSpace(int n)
Generate a data segment of size n |
void |
genStoreByte(java.lang.String srcReg,
int offset,
java.lang.String baseReg)
Generate a store byte instruction |
void |
genStoreWord(java.lang.String srcReg,
int offset,
java.lang.String baseReg)
Generate a store word instruction |
void |
genSub(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate a subtraction instruction |
void |
genSub(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate a subtraction instruction |
void |
genSyscall(int syscallId)
Generate a system call |
void |
genTextStart()
Generate the code to start the text section |
void |
genUncondBr(java.lang.String label)
Generate an unconditional branch |
void |
genWord(java.lang.String dataWord)
Generate a data word |
void |
genXor(java.lang.String destReg,
java.lang.String srcReg,
int imm)
Generate an xor instruction |
void |
genXor(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
Generate an xor instruction |
java.lang.String |
getArg0Reg()
Get the argument register |
java.lang.String |
getArg1Reg()
Get the second argument register |
java.lang.String |
getArg2Reg()
Get the third argument register |
java.lang.String |
getFPReg()
Get the frame pointer register |
java.lang.String |
getGPReg()
Get the global pointer register |
java.lang.String |
getLabel()
Get a unique label for use with control flow |
int |
getNextAvailStackOffset()
Get next available stack offset |
java.lang.String |
getRAReg()
Get the return address register |
java.lang.String |
getResultReg()
Get the result register |
java.lang.String |
getS0Reg()
Get the first callee-saved register |
java.lang.String |
getS1Reg()
Get the second callee-saved register |
java.lang.String |
getS2Reg()
Get the third callee-saved register |
java.lang.String |
getS3Reg()
Get the fourth callee-saved register |
java.lang.String |
getSPReg()
Get the stack pointer register |
java.lang.String |
getT0Reg()
Get the first temporary register |
java.lang.String |
getT1Reg()
Get the second temporary register |
java.lang.String |
getT2Reg()
Get the third temporary register |
java.lang.String |
getT3Reg()
Get the fourth temporary register |
java.lang.String |
getThisReg()
Get the register that holds 'this' pointer |
int |
getWordSize()
Get the word size |
java.lang.String |
getZeroReg()
Get the zero register |
void |
setNextAvailStackOffset(int offset)
Set next available stack offset |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public final int SYSCALL_EXIT
public final int SYSCALL_FILE_OPEN
public final int SYSCALL_FILE_CLOSE
public final int SYSCALL_FILE_READ
public final int SYSCALL_FILE_WRITE
public final int SYSCALL_GET_TIME
public final int SYSCALL_SBRK
| Constructor Detail |
|---|
public MipsSupport(java.io.PrintStream out)
out - print stream| Method Detail |
|---|
public int getNextAvailStackOffset()
public void setNextAvailStackOffset(int offset)
offset - new available stack offsetpublic java.lang.String getZeroReg()
public java.lang.String getSPReg()
public java.lang.String getFPReg()
public java.lang.String getRAReg()
public java.lang.String getGPReg()
public java.lang.String getThisReg()
public java.lang.String getArg0Reg()
public java.lang.String getArg1Reg()
public java.lang.String getArg2Reg()
public java.lang.String getResultReg()
public java.lang.String getT0Reg()
public java.lang.String getT1Reg()
public java.lang.String getT2Reg()
public java.lang.String getT3Reg()
public java.lang.String getS0Reg()
public java.lang.String getS1Reg()
public java.lang.String getS2Reg()
public java.lang.String getS3Reg()
public void genComment(java.lang.String text)
text - text to put in commentpublic void genDataStart()
public void genTextStart()
public void genGlobal(java.lang.String label)
label - label to make globalpublic void genWord(java.lang.String dataWord)
dataWord - word stringpublic void genByte(java.lang.String dataByte)
dataByte - byte stringpublic void genSpace(int n)
n - size of data segmentpublic void genAscii(java.lang.String ascii)
ascii - ASCII stringpublic void genAlign()
public java.lang.String getLabel()
public int getWordSize()
public void genLoadWord(java.lang.String destReg,
int offset,
java.lang.String baseReg)
destReg - string containing the destination registeroffset - integer offset (must be a multiple of the word size)baseReg - string containing the base register
public void genLoadByte(java.lang.String destReg,
int offset,
java.lang.String baseReg)
destReg - string containing the destination registeroffset - integer offsetbaseReg - string containing the base register
public void genStoreWord(java.lang.String srcReg,
int offset,
java.lang.String baseReg)
srcReg - string containing the source registeroffset - integer offset (must be a multiple of the word size)baseReg - string containing the base register
public void genStoreByte(java.lang.String srcReg,
int offset,
java.lang.String baseReg)
srcReg - string containing the source registeroffset - integer offset (must be a multiple of the word size)baseReg - string containing the base register
public void genLoadAddr(java.lang.String destReg,
java.lang.String label)
destReg - string containing the destination registerlabel - address to load into destination register
public void genLoadImm(java.lang.String destReg,
int imm)
destReg - string containing the destination registerimm - immediate to load into destination register
public void genAdd(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genAdd(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genSub(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genSub(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genMul(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genMul(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genDiv(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genDiv(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genMod(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genMod(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genAnd(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genAnd(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genOr(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genOr(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genXor(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genXor(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genShiftLeft(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genShiftLeft(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genShiftRight(java.lang.String destReg,
java.lang.String srcReg1,
java.lang.String srcReg2)
destReg - string containing the destination registersrcReg1 - string containing the first source registersrcReg2 - string containing the second source register
public void genShiftRight(java.lang.String destReg,
java.lang.String srcReg,
int imm)
destReg - string containing the destination registersrcReg - string containing the source registerimm - signed immediate value
public void genMove(java.lang.String destReg,
java.lang.String srcReg)
destReg - string containing the destination registersrcReg - string containing the source register
public void genNeg(java.lang.String destReg,
java.lang.String srcReg)
destReg - string containing the destination registersrcReg - string containing the source register
public void genNot(java.lang.String destReg,
java.lang.String srcReg)
destReg - string containing the destination registersrcReg - string containing the source registerpublic void genLabel(java.lang.String label)
label - label stringpublic void genDirCall(java.lang.String label)
label - label stringpublic void genInDirCall(java.lang.String reg)
reg - register containing callee addresspublic void genRetn()
public void genUncondBr(java.lang.String label)
label - label string
public void genCondBeq(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
reg1 - first register to comparereg2 - second register to comparelabel - label to branch to
public void genCondBne(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
reg1 - first register to comparereg2 - second register to comparelabel - label to branch to
public void genCondBlt(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
reg1 - first register to comparereg2 - second register to comparelabel - label to branch to
public void genCondBleq(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
reg1 - first register to comparereg2 - second register to comparelabel - label to branch to
public void genCondBgt(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
reg1 - first register to comparereg2 - second register to comparelabel - label to branch to
public void genCondBgeq(java.lang.String reg1,
java.lang.String reg2,
java.lang.String label)
reg1 - first register to comparereg2 - second register to comparelabel - label to branch topublic void genSyscall(int syscallId)
syscallId - the system call number
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||