|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcoins.backend.gen.CodeGenerator
coins.backend.gen.CodeGenerator_thumb
| Nested Class Summary | |
(package private) class |
CodeGenerator_thumb.RewrState
State label for rewriting engine. |
(package private) class |
CodeGenerator_thumb.State
State label for instruction selection engine. |
(package private) class |
CodeGenerator_thumb.Thumb
|
(package private) static class |
CodeGenerator_thumb.ThumbAttr
Arm's function attribute |
| Nested classes inherited from class coins.backend.gen.CodeGenerator |
CodeGenerator.FunctionAttr, CodeGenerator.LexpToString, CodeGenerator.Match |
| Field Summary | |
(package private) static int |
F32
|
(package private) static int |
F64
|
(package private) static int |
I16
|
(package private) static int |
I32
|
(package private) static int |
I64
|
(package private) static int |
I8
|
(package private) static int |
MAXREGPARAM
|
(package private) ImList |
regCallClobbers
|
(package private) static int |
REGWIDTH
|
(package private) static int |
SIZE_OF_REGS_ON_STACK
|
(package private) CodeGenerator_thumb.State[] |
stateVec
State vector for labeling LIR nodes. |
(package private) int |
tmpCnt
|
| Fields inherited from class coins.backend.gen.CodeGenerator |
addrType, asmWriter, convention, debOut, disableRewrite, F128, func, funcAttrTbl, INLINECOPYUNIT, lexpConv, lir, localEarlyRewritingTrig, localLateRewritingTrig, machineName, machineParams, module, optSpeed, ProcessFramesTrig, root, typeParamWord |
| Constructor Summary | |
CodeGenerator_thumb()
Create code generator engine. |
|
| Method Summary | |
(package private) int |
byte2nreg(int bytes)
|
(package private) java.lang.String |
defaultRegsetForType(int type)
Return default register set for type. |
(package private) void |
emitAlign(java.io.PrintWriter out,
int align)
Emit data align |
(package private) void |
emitBeginningOfSegment(java.io.PrintWriter out,
java.lang.String segment)
Emit beginning of segment |
(package private) void |
emitCodeLabel(java.io.PrintWriter out,
java.lang.String label)
Emit label for code |
(package private) void |
emitComment(java.io.PrintWriter out,
java.lang.String comment)
print comment in assembly language. |
(package private) void |
emitCommon(java.io.PrintWriter out,
SymStatic symbol,
int bytes)
Emit data common |
(package private) void |
emitData(java.io.PrintWriter out,
int type,
LirNode node)
Emit data |
(package private) void |
emitDataLabel(java.io.PrintWriter out,
java.lang.String label)
Emit label for data |
(package private) void |
emitEndOfSegment(java.io.PrintWriter out,
java.lang.String segment)
Emit end of segment |
(package private) void |
emitLinkage(java.io.PrintWriter out,
SymStatic symbol)
Emit linkage information of symbol |
(package private) java.lang.String |
emitLir(LirNode node)
Expand emit-macro for LirNode. |
(package private) java.lang.String |
emitList(ImList form,
boolean topLevel)
Expand emit-macro for list form. |
(package private) void |
emitZeros(java.io.PrintWriter out,
int bytes)
Emit data zeros |
(package private) boolean |
equalArg(LirNode x,
LirNode y)
Return true if variable x and y are same. |
(package private) java.lang.Object |
expandBuildMacro(ImList form)
Expand building-macro. |
(package private) int |
getCost1(LirNode t,
int goal)
Return the cost for LIR node t and goal nonterminal goal. |
(package private) int |
getCost2(LirNode t,
int goal)
|
(package private) Rule |
getRule(LirNode t,
int goal)
Return the chosen rule for LIR node t and goal nonterminal goal. |
(package private) void |
initLabeling(LirFactory lir)
Initialize for labeling. |
(package private) void |
initRewriteLabeling()
Initialization for rewriting. |
(package private) java.io.OutputStream |
insertPostProcessor(java.io.OutputStream out)
Run Literal and Branch post processor after generating assembly code. |
(package private) boolean |
isComplex(LirNode node)
Return true if node is a complex one. |
(package private) boolean |
isConv(int op)
|
(package private) boolean |
isFp(LirNode node)
|
(package private) boolean |
isSp(LirNode node)
|
(package private) java.lang.String |
jmac1(java.lang.String x)
|
(package private) java.lang.String |
jmac10(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac11(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac12(java.lang.String x)
|
(package private) java.lang.String |
jmac13(java.lang.Object f)
Generate prologue sequence. |
(package private) java.lang.String |
jmac14(java.lang.Object f,
java.lang.String rettype)
Generate epilogue sequence. |
(package private) java.lang.String |
jmac15(java.lang.String x)
|
(package private) java.lang.String |
jmac16(java.lang.String x)
|
(package private) java.lang.String |
jmac2(java.lang.String x)
|
(package private) java.lang.String |
jmac3(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac4(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac5(java.lang.String x)
|
(package private) java.lang.String |
jmac6(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac7(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac8(java.lang.String x)
|
(package private) java.lang.String |
jmac9(java.lang.String x)
|
(package private) void |
labelTree(LirNode t)
Label LIR tree t. |
(package private) int |
makeVaStart(LirNode arg)
Return offset for va_start position. |
(package private) CodeGenerator.FunctionAttr |
newFunctionAttr(Function func)
Prepare new function attribute information. |
(package private) void |
notifyEndToPostProcessor()
Notify end of assembly to post-processor. |
(package private) java.lang.Object |
quiltLir(LirNode node)
Expand building-macro, for LirNode |
(package private) LirNode |
rewriteCall(LirNode node,
BiList pre,
BiList post)
Rewrite CALL node. |
(package private) LirNode |
rewriteEpilogue(LirNode node,
BiList pre)
Rewrite EPILOGUE |
(package private) LirNode |
rewriteFrame(LirNode node)
Rewrite FRAME node to target machine form. |
(package private) LirNode |
rewritePrologue(LirNode node,
BiList post)
Rewrite PROLOGUE |
(package private) LirNode |
rewriteTree(LirNode tree,
java.lang.String phase,
BiList pre,
BiList post)
Rewrite L-expression. |
(package private) void |
setAllocaUsed()
|
(package private) java.lang.String |
showLabel(LirNode t)
Return label state |
(package private) int |
startNT()
Return start nonterminal symbol. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
CodeGenerator_thumb.State[] stateVec
ImList regCallClobbers
int tmpCnt
static final int I64
static final int I32
static final int I16
static final int I8
static final int F64
static final int F32
static final int MAXREGPARAM
static final int REGWIDTH
static final int SIZE_OF_REGS_ON_STACK
| Constructor Detail |
public CodeGenerator_thumb()
| Method Detail |
void initRewriteLabeling()
CodeGenerator
initRewriteLabeling in class CodeGenerator
LirNode rewriteTree(LirNode tree,
java.lang.String phase,
BiList pre,
BiList post)
rewriteTree in class CodeGeneratorjava.lang.String defaultRegsetForType(int type)
defaultRegsetForType in class CodeGeneratorvoid initLabeling(LirFactory lir)
CodeGenerator
initLabeling in class CodeGeneratorjava.lang.String showLabel(LirNode t)
CodeGenerator
showLabel in class CodeGeneratorvoid labelTree(LirNode t)
CodeGenerator
labelTree in class CodeGenerator
Rule getRule(LirNode t,
int goal)
CodeGenerator
getRule in class CodeGenerator
int getCost1(LirNode t,
int goal)
CodeGenerator
getCost1 in class CodeGenerator
int getCost2(LirNode t,
int goal)
getCost2 in class CodeGeneratorint startNT()
CodeGenerator
startNT in class CodeGeneratorjava.lang.Object expandBuildMacro(ImList form)
expandBuildMacro in class CodeGeneratorjava.lang.Object quiltLir(LirNode node)
quiltLir in class CodeGenerator
java.lang.String emitList(ImList form,
boolean topLevel)
emitList in class CodeGeneratorjava.lang.String emitLir(LirNode node)
emitLir in class CodeGeneratorjava.io.OutputStream insertPostProcessor(java.io.OutputStream out)
insertPostProcessor in class CodeGeneratorvoid notifyEndToPostProcessor()
CodeGenerator
notifyEndToPostProcessor in class CodeGeneratorCodeGenerator.FunctionAttr newFunctionAttr(Function func)
CodeGenerator
newFunctionAttr in class CodeGeneratorboolean isConv(int op)
boolean equalArg(LirNode x,
LirNode y)
CodeGenerator
equalArg in class CodeGeneratorint makeVaStart(LirNode arg)
LirNode rewriteFrame(LirNode node)
rewriteFrame in class CodeGenerator
LirNode rewriteEpilogue(LirNode node,
BiList pre)
rewriteEpilogue in class CodeGeneratorboolean isComplex(LirNode node)
isComplex in class CodeGeneratorint byte2nreg(int bytes)
LirNode rewritePrologue(LirNode node,
BiList post)
rewritePrologue in class CodeGenerator
LirNode rewriteCall(LirNode node,
BiList pre,
BiList post)
rewriteCall in class CodeGeneratorjava.lang.String jmac1(java.lang.String x)
java.lang.String jmac2(java.lang.String x)
java.lang.String jmac3(java.lang.String x,
java.lang.String y)
java.lang.String jmac4(java.lang.String x,
java.lang.String y)
java.lang.String jmac5(java.lang.String x)
java.lang.String jmac6(java.lang.String x,
java.lang.String y)
java.lang.String jmac7(java.lang.String x,
java.lang.String y)
java.lang.String jmac8(java.lang.String x)
java.lang.String jmac9(java.lang.String x)
java.lang.String jmac10(java.lang.String x,
java.lang.String y)
java.lang.String jmac11(java.lang.String x,
java.lang.String y)
java.lang.String jmac12(java.lang.String x)
java.lang.String jmac13(java.lang.Object f)
java.lang.String jmac14(java.lang.Object f,
java.lang.String rettype)
java.lang.String jmac15(java.lang.String x)
java.lang.String jmac16(java.lang.String x)
void emitComment(java.io.PrintWriter out,
java.lang.String comment)
CodeGenerator
emitComment in class CodeGenerator
void emitBeginningOfSegment(java.io.PrintWriter out,
java.lang.String segment)
CodeGenerator
emitBeginningOfSegment in class CodeGenerator
void emitEndOfSegment(java.io.PrintWriter out,
java.lang.String segment)
CodeGenerator
emitEndOfSegment in class CodeGenerator
void emitDataLabel(java.io.PrintWriter out,
java.lang.String label)
CodeGenerator
emitDataLabel in class CodeGenerator
void emitCodeLabel(java.io.PrintWriter out,
java.lang.String label)
CodeGenerator
emitCodeLabel in class CodeGenerator
void emitAlign(java.io.PrintWriter out,
int align)
emitAlign in class CodeGenerator
void emitCommon(java.io.PrintWriter out,
SymStatic symbol,
int bytes)
emitCommon in class CodeGenerator
void emitLinkage(java.io.PrintWriter out,
SymStatic symbol)
emitLinkage in class CodeGenerator
void emitZeros(java.io.PrintWriter out,
int bytes)
emitZeros in class CodeGenerator
void emitData(java.io.PrintWriter out,
int type,
LirNode node)
emitData in class CodeGeneratorboolean isSp(LirNode node)
boolean isFp(LirNode node)
void setAllocaUsed()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||