coins.backend.gen
クラス CodeGenerator_mips

java.lang.Object
  |
  +--coins.backend.gen.CodeGenerator
        |
        +--coins.backend.gen.CodeGenerator_mips

public class CodeGenerator_mips
extends CodeGenerator


入れ子クラスの概要
(パッケージプライベート)  class CodeGenerator_mips.mipsAggregateByReference
          Convert aggregate parameter passing from by-value to by-reference.
(パッケージプライベート)  class CodeGenerator_mips.mipsArgumentPassingUtil
          Processing of Save-and-Restore(SR), as utility class.
(パッケージプライベート) static class CodeGenerator_mips.mipsAttr
          mips's function attribute
(パッケージプライベート)  class CodeGenerator_mips.mipsSRR
          Processing of Save-and-Restore Registers(SRR)
(パッケージプライベート)  class CodeGenerator_mips.RewrState
          State label for rewriting engine.
(パッケージプライベート)  class CodeGenerator_mips.State
          State label for instruction selection engine.
 
クラス coins.backend.gen.CodeGenerator から継承した入れ子クラス
CodeGenerator.LexpToString, CodeGenerator.Match
 
フィールドの概要
 CodeGenerator_mips.mipsAggregateByReference mipsAggregateByReferenceTrig
           
 CodeGenerator_mips.mipsArgumentPassingUtil mipsArgumentPassing
           
 CodeGenerator_mips.mipsSRR mipsSRRTrig
           
(パッケージプライベート)  CodeGenerator_mips.State[] stateVec
          State vector for labeling LIR nodes.
 
クラス coins.backend.gen.CodeGenerator から継承したフィールド
addrType, asmWriter, convention, debOut, disableRewrite, F128, F32, F64, func, funcAttrTbl, I16, I32, I64, I8, INLINECOPYUNIT, lexpConv, lir, localEarlyRewritingTrig, localLateRewritingTrig, machineName, machineParams, module, optSpeed, ProcessFramesTrig, root, typeParamWord
 
コンストラクタの概要
CodeGenerator_mips()
          Create code generator engine.
 
メソッドの概要
 int alignForType(int type)
          Return alignment for type.
(パッケージプライベート)  java.lang.String defaultRegsetForType(int type)
          Return default register set for type.
 Transformer[] earlyRewritingSequence()
          Return early time pre-rewriting sequence.
(パッケージプライベート)  void emitAlign(java.io.PrintWriter out, int align)
          Emit data align
(パッケージプライベート)  void emitBeginningOfSegment(java.io.PrintWriter out, java.lang.String segment)
          Emit beginning of segment
(パッケージプライベート)  void emitCodeLabel(java.io.PrintWriter out, java.lang.String label)
          Emit label for code
(パッケージプライベート)  void emitComment(java.io.PrintWriter out, java.lang.String comment)
          print comment in assembly language.
(パッケージプライベート)  void emitCommon(java.io.PrintWriter out, SymStatic symbol, int bytes)
          Emit data common
(パッケージプライベート)  void emitData(java.io.PrintWriter out, int type, LirNode node)
          Emit data
(パッケージプライベート)  void emitDataLabel(java.io.PrintWriter out, java.lang.String label)
          Emit label for data
(パッケージプライベート)  void emitEndOfSegment(java.io.PrintWriter out, java.lang.String segment)
          Emit end of segment
(パッケージプライベート)  void emitIdent(java.io.PrintWriter out, java.lang.String word)
          Emit ident
(パッケージプライベート)  void emitLinkage(java.io.PrintWriter out, SymStatic symbol)
          Emit linkage information of symbol
(パッケージプライベート)  java.lang.String emitLir(LirNode node)
          Expand emit-macro for LirNode.
(パッケージプライベート)  java.lang.String emitList(ImList form, boolean topLevel)
          Expand emit-macro for list form.
(パッケージプライベート)  void emitZeros(java.io.PrintWriter out, int bytes)
          Emit data zeros
(パッケージプライベート)  java.lang.Object expandBuildMacro(ImList form)
          Expand building-macro.
(パッケージプライベート)  int getCost1(LirNode t, int goal)
          Return the cost for LIR node t and goal nonterminal goal.
(パッケージプライベート)  int getCost2(LirNode t, int goal)
           
(パッケージプライベート)  Rule getRule(LirNode t, int goal)
          Return the chosen rule for LIR node t and goal nonterminal goal.
(パッケージプライベート)  void initializeMachineDep()
          Do Machine-dependent initialization (subclass may override this).
(パッケージプライベート)  void initLabeling(LirFactory lir)
          Initialize for labeling.
(パッケージプライベート)  void initRewriteLabeling()
          Initialization for rewriting.
(パッケージプライベート)  java.lang.Object jmac1(LirNode x)
           
(パッケージプライベート)  java.lang.String jmac10(java.lang.Object f, java.lang.String rettype)
           
(パッケージプライベート)  java.lang.String jmac11(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac12(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac13(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac2(java.lang.String x, java.lang.String y)
           
(パッケージプライベート)  java.lang.String jmac3(java.lang.String x, java.lang.String y)
           
(パッケージプライベート)  java.lang.String jmac4(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac5(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac6(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac7(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac8(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac9(java.lang.Object f)
           
(パッケージプライベート)  void labelTree(LirNode t)
          Label LIR tree t.
(パッケージプライベート)  CodeGenerator.FunctionAttr newFunctionAttr(Function func)
          Prepare new function attribute information(override for mips).
(パッケージプライベート)  java.lang.Object quiltLir(LirNode node)
          Expand building-macro, for LirNode
(パッケージプライベート)  LirNode rewriteCall(LirNode node, BiList pre, BiList post)
          Rewrite CALL node.
(パッケージプライベート)  LirNode rewriteCONVFU(LirNode node, BiList pre)
          Rewrite CONVFU(x) to: if (x < 2147483648) CONVFS(x) else CONVFS(x - 2147483648) + 214748648
(パッケージプライベート)  LirNode rewriteCONVUF(LirNode node, BiList pre)
          Rewrite CONVUF
(パッケージプライベート)  LirNode rewriteEpilogue(LirNode node, BiList pre)
          Rewrite EPILOGUE
(パッケージプライベート)  LirNode rewriteFrame(LirNode node)
          Rewrite FRAME node to target machine form.
(パッケージプライベート)  LirNode rewritePrologue(LirNode node, BiList post)
          Rewrite PROLOGUE
(パッケージプライベート)  LirNode rewriteTree(LirNode tree, java.lang.String phase, BiList pre, BiList post)
          Rewrite L-expression.
(パッケージプライベート)  java.lang.String segmentForConst()
          Return segment for read-only constant.
(パッケージプライベート)  java.lang.String showLabel(LirNode t)
          Return label state
(パッケージプライベート)  int startNT()
          Return start nonterminal symbol.
 
クラス coins.backend.gen.CodeGenerator から継承したメソッド
buildCode, clcvnClobbers, clcvnParamMem, clcvnParamOffset, clcvnParamReg, clcvnParamWord, clcvnPartialWord, clcvnPassFloatRegMem, clcvnRegLimit, clcvnReturnValue, clcvnSetPartialWord, clcvnStructReturnAsFirst, clcvnStructReturnPtr, close, codeInfo, convToAsm, dropRegToFrame, emitAsmCode, emitBeginningOfModule, emitCode, emitEndOfModule, emitLirDefault, emitListDefault, emitNamedConst, emitObject, emitObjectX, emitSegment, emitTop, equalArg, frameIsEmpty, frameSize, genHeader, genTrailer, getFunctionAttr, getMachineParams, initialize, insertPostProcessor, instructionSelection, isComplex, isSimple, lateRewritingSequence, makeAsmSymbol, makeLabelDef, mapRegToFrame, nActualOperands, noRescan, notifyEndToPostProcessor, paramOffset, paramToBeSaved, peepHoleOpt, phyReg, prepareCodeInfo, prerewrite, printLabel, quiltLirDefault, reduce, reserveFrame, rewriteAggregateCopy, rewriteAsm, rewriteJumpn, setAsmStream
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

stateVec

CodeGenerator_mips.State[] stateVec
State vector for labeling LIR nodes. Suffix is a LirNode's id.


mipsSRRTrig

public final CodeGenerator_mips.mipsSRR mipsSRRTrig

mipsArgumentPassing

public final CodeGenerator_mips.mipsArgumentPassingUtil mipsArgumentPassing

mipsAggregateByReferenceTrig

public final CodeGenerator_mips.mipsAggregateByReference mipsAggregateByReferenceTrig
コンストラクタの詳細

CodeGenerator_mips

public CodeGenerator_mips()
Create code generator engine.

メソッドの詳細

initRewriteLabeling

void initRewriteLabeling()
クラス CodeGenerator の記述:
Initialization for rewriting.

定義:
クラス CodeGenerator 内の initRewriteLabeling

rewriteTree

LirNode rewriteTree(LirNode tree,
                    java.lang.String phase,
                    BiList pre,
                    BiList post)
Rewrite L-expression.

定義:
クラス CodeGenerator 内の rewriteTree

defaultRegsetForType

java.lang.String defaultRegsetForType(int type)
Return default register set for type.

定義:
クラス CodeGenerator 内の defaultRegsetForType

initLabeling

void initLabeling(LirFactory lir)
クラス CodeGenerator の記述:
Initialize for labeling.

定義:
クラス CodeGenerator 内の initLabeling

showLabel

java.lang.String showLabel(LirNode t)
クラス CodeGenerator の記述:
Return label state

定義:
クラス CodeGenerator 内の showLabel

labelTree

void labelTree(LirNode t)
クラス CodeGenerator の記述:
Label LIR tree t.

定義:
クラス CodeGenerator 内の labelTree

getRule

Rule getRule(LirNode t,
             int goal)
クラス CodeGenerator の記述:
Return the chosen rule for LIR node t and goal nonterminal goal.

定義:
クラス CodeGenerator 内の getRule

getCost1

int getCost1(LirNode t,
             int goal)
クラス CodeGenerator の記述:
Return the cost for LIR node t and goal nonterminal goal.

定義:
クラス CodeGenerator 内の getCost1

getCost2

int getCost2(LirNode t,
             int goal)
定義:
クラス CodeGenerator 内の getCost2

startNT

int startNT()
クラス CodeGenerator の記述:
Return start nonterminal symbol.

定義:
クラス CodeGenerator 内の startNT

expandBuildMacro

java.lang.Object expandBuildMacro(ImList form)
Expand building-macro.

定義:
クラス CodeGenerator 内の expandBuildMacro

quiltLir

java.lang.Object quiltLir(LirNode node)
Expand building-macro, for LirNode

定義:
クラス CodeGenerator 内の quiltLir

emitList

java.lang.String emitList(ImList form,
                          boolean topLevel)
Expand emit-macro for list form.

定義:
クラス CodeGenerator 内の emitList

emitLir

java.lang.String emitLir(LirNode node)
Expand emit-macro for LirNode.

定義:
クラス CodeGenerator 内の emitLir

initializeMachineDep

void initializeMachineDep()
クラス CodeGenerator の記述:
Do Machine-dependent initialization (subclass may override this).

オーバーライド:
クラス CodeGenerator 内の initializeMachineDep

newFunctionAttr

CodeGenerator.FunctionAttr newFunctionAttr(Function func)
Prepare new function attribute information(override for mips).

オーバーライド:
クラス CodeGenerator 内の newFunctionAttr

rewriteFrame

LirNode rewriteFrame(LirNode node)
Rewrite FRAME node to target machine form.

オーバーライド:
クラス CodeGenerator 内の rewriteFrame

earlyRewritingSequence

public Transformer[] earlyRewritingSequence()
Return early time pre-rewriting sequence.

オーバーライド:
クラス CodeGenerator 内の earlyRewritingSequence

rewriteCONVUF

LirNode rewriteCONVUF(LirNode node,
                      BiList pre)
Rewrite CONVUF

オーバーライド:
クラス CodeGenerator 内の rewriteCONVUF

rewriteCONVFU

LirNode rewriteCONVFU(LirNode node,
                      BiList pre)
Rewrite CONVFU(x) to: if (x < 2147483648) CONVFS(x) else CONVFS(x - 2147483648) + 214748648

オーバーライド:
クラス CodeGenerator 内の rewriteCONVFU

rewritePrologue

LirNode rewritePrologue(LirNode node,
                        BiList post)
Rewrite PROLOGUE

オーバーライド:
クラス CodeGenerator 内の rewritePrologue

rewriteEpilogue

LirNode rewriteEpilogue(LirNode node,
                        BiList pre)
Rewrite EPILOGUE

オーバーライド:
クラス CodeGenerator 内の rewriteEpilogue

rewriteCall

LirNode rewriteCall(LirNode node,
                    BiList pre,
                    BiList post)
Rewrite CALL node.

オーバーライド:
クラス CodeGenerator 内の rewriteCall

jmac1

java.lang.Object jmac1(LirNode x)

jmac2

java.lang.String jmac2(java.lang.String x,
                       java.lang.String y)

jmac3

java.lang.String jmac3(java.lang.String x,
                       java.lang.String y)

jmac4

java.lang.String jmac4(java.lang.String x)

jmac5

java.lang.String jmac5(java.lang.String x)

jmac6

java.lang.String jmac6(java.lang.String x)

jmac7

java.lang.String jmac7(java.lang.String x)

jmac8

java.lang.String jmac8(java.lang.String x)

jmac9

java.lang.String jmac9(java.lang.Object f)

jmac10

java.lang.String jmac10(java.lang.Object f,
                        java.lang.String rettype)

jmac11

java.lang.String jmac11(java.lang.String x)

jmac12

java.lang.String jmac12(java.lang.String x)

jmac13

java.lang.String jmac13(java.lang.String x)

segmentForConst

java.lang.String segmentForConst()
Return segment for read-only constant.

オーバーライド:
クラス CodeGenerator 内の segmentForConst

alignForType

public int alignForType(int type)
Return alignment for type.

オーバーライド:
クラス CodeGenerator 内の alignForType

emitComment

void emitComment(java.io.PrintWriter out,
                 java.lang.String comment)
クラス CodeGenerator の記述:
print comment in assembly language.

オーバーライド:
クラス CodeGenerator 内の emitComment

emitBeginningOfSegment

void emitBeginningOfSegment(java.io.PrintWriter out,
                            java.lang.String segment)
クラス CodeGenerator の記述:
Emit beginning of segment

オーバーライド:
クラス CodeGenerator 内の emitBeginningOfSegment

emitEndOfSegment

void emitEndOfSegment(java.io.PrintWriter out,
                      java.lang.String segment)
クラス CodeGenerator の記述:
Emit end of segment

オーバーライド:
クラス CodeGenerator 内の emitEndOfSegment

emitDataLabel

void emitDataLabel(java.io.PrintWriter out,
                   java.lang.String label)
クラス CodeGenerator の記述:
Emit label for data

オーバーライド:
クラス CodeGenerator 内の emitDataLabel

emitCodeLabel

void emitCodeLabel(java.io.PrintWriter out,
                   java.lang.String label)
クラス CodeGenerator の記述:
Emit label for code

オーバーライド:
クラス CodeGenerator 内の emitCodeLabel

emitAlign

void emitAlign(java.io.PrintWriter out,
               int align)
Emit data align

オーバーライド:
クラス CodeGenerator 内の emitAlign

emitCommon

void emitCommon(java.io.PrintWriter out,
                SymStatic symbol,
                int bytes)
Emit data common

オーバーライド:
クラス CodeGenerator 内の emitCommon

emitLinkage

void emitLinkage(java.io.PrintWriter out,
                 SymStatic symbol)
Emit linkage information of symbol

オーバーライド:
クラス CodeGenerator 内の emitLinkage

emitZeros

void emitZeros(java.io.PrintWriter out,
               int bytes)
Emit data zeros

オーバーライド:
クラス CodeGenerator 内の emitZeros

emitIdent

void emitIdent(java.io.PrintWriter out,
               java.lang.String word)
Emit ident

オーバーライド:
クラス CodeGenerator 内の emitIdent

emitData

void emitData(java.io.PrintWriter out,
              int type,
              LirNode node)
Emit data

オーバーライド:
クラス CodeGenerator 内の emitData