coins.backend.gen
クラス CodeGenerator_sh4

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

public class CodeGenerator_sh4
extends CodeGenerator


入れ子クラスの概要
(パッケージプライベート)  class CodeGenerator_sh4.CodeAnalysisInfo
           
(パッケージプライベート) static class CodeGenerator_sh4.LabelRegister
           
(パッケージプライベート) static class CodeGenerator_sh4.RegistLabel
           
(パッケージプライベート)  class CodeGenerator_sh4.RewrState
          State label for rewriting engine.
(パッケージプライベート) static class CodeGenerator_sh4.SH4Attr
          Sparc's function attribute
(パッケージプライベート)  class CodeGenerator_sh4.State
          State label for instruction selection engine.
 
クラス coins.backend.gen.CodeGenerator から継承した入れ子クラス
CodeGenerator.LexpToString, CodeGenerator.Match
 
フィールドの概要
(パッケージプライベート) static int BASEREGPARAM
           
(パッケージプライベート) static int code_size_inblock
           
(パッケージプライベート) static int F32
           
(パッケージプライベート) static int F64
           
(パッケージプライベート) static int fpscr_ctrl
           
(パッケージプライベート) static int I16
           
(パッケージプライベート) static int I32
           
(パッケージプライベート) static int I8
           
(パッケージプライベート) static CodeGenerator_sh4.RegistLabel label_long_const
           
(パッケージプライベート) static CodeGenerator_sh4.RegistLabel label_short_const
           
(パッケージプライベート) static BiList list
           
(パッケージプライベート) static int MAXREGPARAM
          Late time pre-rewriting of LIR.
(パッケージプライベート) static int MAXREGPARAM_F
           
(パッケージプライベート) static int offset_calc
          Rewrite FRAME node to target machine form.
(パッケージプライベート)  ImList regCallClobbers
           
(パッケージプライベート) static java.lang.String[] regist_global_label
           
(パッケージプライベート) static int regist_global_label_count
           
(パッケージプライベート) static int stackshift
           
(パッケージプライベート)  CodeGenerator_sh4.State[] stateVec
          State vector for labeling LIR nodes.
 
クラス coins.backend.gen.CodeGenerator から継承したフィールド
addrType, asmWriter, convention, debOut, disableRewrite, F128, func, funcAttrTbl, I64, INLINECOPYUNIT, lexpConv, lir, localEarlyRewritingTrig, localLateRewritingTrig, machineName, machineParams, module, optSpeed, ProcessFramesTrig, root, typeParamWord
 
コンストラクタの概要
CodeGenerator_sh4()
          Create code generator engine.
 
メソッドの概要
(パッケージプライベート)  boolean codeSizeAnalysis(Function f)
           
(パッケージプライベート)  java.lang.String defaultRegsetForType(int type)
          Return default register set for type.
 void earlyRewritingMachineDep(Module module)
          Early time pre-rewriting of LIR.
(パッケージプライベート)  void emitAlign(java.io.PrintWriter out, int align)
          Emit data align
(パッケージプライベート)  void emitBeginningOfModule(java.io.PrintWriter out)
           
(パッケージプライベート)  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 emitEndOfModule(java.io.PrintWriter out)
           
(パッケージプライベート)  void emitEndOfSegment(java.io.PrintWriter out, java.lang.String segment)
          Emit end of segment
(パッケージプライベート)  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.
(パッケージプライベート)  java.lang.String emitObjectX(java.lang.Object x, boolean top)
          Convert S-expression assembly code to string.
(パッケージプライベート)  void emitZeros(java.io.PrintWriter out, int bytes)
          Emit data zeros
(パッケージプライベート)  boolean equalArg(LirNode x, LirNode y)
          Return true if variable x and y are same.
(パッケージプライベート)  java.lang.Object expandBuildMacro(ImList form)
          Expand building-macro.
(パッケージプライベート)  int frameSize(Function f)
          Return frame size (in positive) of function.
(パッケージプライベート)  int getCost1(LirNode t, int goal)
          Return the cost for LIR node t and goal nonterminal goal.
(パッケージプライベート)  int getCost2(LirNode t, int goal)
           
(パッケージプライベート)  int getOffset(Function f, java.lang.String s)
           
(パッケージプライベート)  Rule getRule(LirNode t, int goal)
          Return the chosen rule for LIR node t and goal nonterminal goal.
(パッケージプライベート)  int getStringCodeSize(java.lang.String line)
           
(パッケージプライベート)  LirNode highlong(LirNode exp)
           
(パッケージプライベート)  void initLabeling(LirFactory lir)
          Initialize for labeling.
(パッケージプライベート)  void initRewriteLabeling()
          Initialization for rewriting.
(パッケージプライベート)  boolean is8bitConst(LirNode node)
           
(パッケージプライベート)  boolean isComplex(LirNode node)
          Return true if node is a complex one.
(パッケージプライベート)  java.lang.Object jmac1(java.lang.Object x)
          Return aggregate size & 0xfff.
(パッケージプライベート)  java.lang.String jmac10(java.lang.String x, java.lang.String y)
           
(パッケージプライベート)  java.lang.String jmac11(java.lang.String x, java.lang.String y)
          Expand _set macro s.t. copying 32bit constant x to y.
(パッケージプライベート)  java.lang.String jmac12(java.lang.String x, java.lang.String y)
           
(パッケージプライベート)  java.lang.String jmac13(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac14(java.lang.String sign, java.lang.String x, java.lang.String y, java.lang.String z)
           
(パッケージプライベート)  java.lang.String jmac15(java.lang.String sign, java.lang.String x, java.lang.String y, java.lang.String z)
           
(パッケージプライベート)  java.lang.String jmac16(java.lang.String x, java.lang.String y)
           
(パッケージプライベート)  java.lang.String jmac17(java.lang.String x, java.lang.String y)
           
(パッケージプライベート)  java.lang.String jmac18(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac19(java.lang.String x)
           
(パッケージプライベート)  java.lang.Object jmac2(LirNode x)
           
(パッケージプライベート)  java.lang.String jmac20(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac21(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac22(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac23(java.lang.Object f)
           
(パッケージプライベート)  java.lang.String jmac24(java.lang.Object f, java.lang.String rettype)
           
(パッケージプライベート)  java.lang.String jmac25(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac26(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac3(java.lang.String x)
           
(パッケージプライベート)  java.lang.String jmac4(java.lang.String x, java.lang.String y)
           
(パッケージプライベート)  java.lang.String jmac5(java.lang.String code, java.lang.String arg)
           
(パッケージプライベート)  java.lang.String jmac6(java.lang.String code, java.lang.String arg1)
           
(パッケージプライベート)  java.lang.String jmac7(java.lang.String code, java.lang.String arg1, java.lang.String arg2)
           
(パッケージプライベート)  java.lang.String jmac8(java.lang.String s, java.lang.String code, java.lang.String arg)
           
(パッケージプライベート)  java.lang.String jmac9(java.lang.String mode, java.lang.String code, java.lang.String arg1, java.lang.String arg2)
           
(パッケージプライベート)  void labelTree(LirNode t)
          Label LIR tree t.
(パッケージプライベート)  LirNode lowlong(LirNode exp)
           
(パッケージプライベート)  int makeVaStart(LirNode arg)
          Return offset for va_start position.
(パッケージプライベート)  CodeGenerator.FunctionAttr newFunctionAttr(Function func)
          Prepare new function attribute information.
(パッケージプライベート)  void peepHoleOpt(BiList list)
          Peep-hole optimizer.
(パッケージプライベート)  BiList preBuildCode(Function f)
           
(パッケージプライベート)  void printBasicBlk(BasicBlk blk)
           
(パッケージプライベート)  java.lang.Object quiltLir(LirNode node)
          Expand building-macro, for LirNode
(パッケージプライベート)  LirNode rewriteAggregateCopy(LirNode node, BiList pre)
          Rewrite AGGREGATE COPY
(パッケージプライベート)  LirNode rewriteCall(LirNode node, BiList pre, BiList post)
          Rewrite CALL.
(パッケージプライベート)  LirNode rewriteCONVFLOAT(LirNode node, BiList pre)
          Return early time pre-rewriting sequence.
(パッケージプライベート)  LirNode rewriteCONVFU(LirNode node)
           
(パッケージプライベート)  LirNode rewriteCONVUF(LirNode node, BiList pre)
          Rewrite CONVUF
(パッケージプライベート)  LirNode rewriteDIV(LirNode node, BiList pre)
           
(パッケージプライベート)  LirNode rewriteEpilogue(LirNode node, BiList pre)
          Rewrite EPILOGUE
(パッケージプライベート)  LirNode rewriteFrame(LirNode node)
          Rewrite FRAME node to target machine form.
(パッケージプライベート)  LirNode rewriteJumpc(LirNode node)
           
(パッケージプライベート)  LirNode rewriteMOD(LirNode node, BiList pre)
           
(パッケージプライベート)  LirNode rewriteMUL(LirNode node)
           
(パッケージプライベート)  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 showLabel(LirNode t)
          Return label state
(パッケージプライベート)  int startNT()
          Return start nonterminal symbol.
(パッケージプライベート)  LirNode ToRegister(LirNode iReg, BiList iOut)
           
 
クラス coins.backend.gen.CodeGenerator から継承したメソッド
alignForType, buildCode, clcvnClobbers, clcvnParamMem, clcvnParamOffset, clcvnParamReg, clcvnParamWord, clcvnPartialWord, clcvnPassFloatRegMem, clcvnRegLimit, clcvnReturnValue, clcvnSetPartialWord, clcvnStructReturnAsFirst, clcvnStructReturnPtr, close, codeInfo, convToAsm, dropRegToFrame, earlyRewritingSequence, emitAsmCode, emitBeginningOfModule, emitCode, emitEndOfModule, emitIdent, emitLirDefault, emitListDefault, emitNamedConst, emitObject, emitSegment, emitTop, frameIsEmpty, genHeader, genTrailer, getFunctionAttr, getMachineParams, initialize, initializeMachineDep, insertPostProcessor, instructionSelection, isSimple, lateRewritingSequence, makeAsmSymbol, makeLabelDef, mapRegToFrame, nActualOperands, noRescan, notifyEndToPostProcessor, paramOffset, paramToBeSaved, phyReg, prepareCodeInfo, prerewrite, printLabel, quiltLirDefault, reduce, reserveFrame, rewriteAsm, rewriteCONVFU, rewriteJumpn, segmentForConst, setAsmStream
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

stateVec

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


fpscr_ctrl

static int fpscr_ctrl

code_size_inblock

static int code_size_inblock

stackshift

static int stackshift

label_long_const

static CodeGenerator_sh4.RegistLabel label_long_const

label_short_const

static CodeGenerator_sh4.RegistLabel label_short_const

regist_global_label

static java.lang.String[] regist_global_label

regist_global_label_count

static int regist_global_label_count

regCallClobbers

ImList regCallClobbers

list

static BiList list

I32

static final int I32

I16

static final int I16

I8

static final int I8

F64

static final int F64

F32

static final int F32

offset_calc

static int offset_calc
Rewrite FRAME node to target machine form.


MAXREGPARAM

static final int MAXREGPARAM
Late time pre-rewriting of LIR.

関連項目:
定数フィールド値

MAXREGPARAM_F

static final int MAXREGPARAM_F
関連項目:
定数フィールド値

BASEREGPARAM

static final int BASEREGPARAM
関連項目:
定数フィールド値
コンストラクタの詳細

CodeGenerator_sh4

public CodeGenerator_sh4()
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

frameSize

int frameSize(Function f)
クラス CodeGenerator の記述:
Return frame size (in positive) of function.

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

getOffset

int getOffset(Function f,
              java.lang.String s)

getStringCodeSize

int getStringCodeSize(java.lang.String line)

emitObjectX

java.lang.String emitObjectX(java.lang.Object x,
                             boolean top)
クラス CodeGenerator の記述:
Convert S-expression assembly code to string.

オーバーライド:
クラス CodeGenerator 内の emitObjectX
パラメータ:
top - true if this is a top-level.

preBuildCode

BiList preBuildCode(Function f)

codeSizeAnalysis

boolean codeSizeAnalysis(Function f)

newFunctionAttr

CodeGenerator.FunctionAttr newFunctionAttr(Function func)
クラス CodeGenerator の記述:
Prepare new function attribute information.

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

makeVaStart

int makeVaStart(LirNode arg)
Return offset for va_start position.


equalArg

boolean equalArg(LirNode x,
                 LirNode y)
クラス CodeGenerator の記述:
Return true if variable x and y are same.

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

printBasicBlk

void printBasicBlk(BasicBlk blk)

rewriteCONVFLOAT

LirNode rewriteCONVFLOAT(LirNode node,
                         BiList pre)
Return early time pre-rewriting sequence.


rewriteMUL

LirNode rewriteMUL(LirNode node)

rewriteCONVFU

LirNode rewriteCONVFU(LirNode node)

rewriteDIV

LirNode rewriteDIV(LirNode node,
                   BiList pre)

rewriteMOD

LirNode rewriteMOD(LirNode node,
                   BiList pre)

ToRegister

LirNode ToRegister(LirNode iReg,
                   BiList iOut)

rewriteCONVUF

LirNode rewriteCONVUF(LirNode node,
                      BiList pre)
Rewrite CONVUF

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

rewriteFrame

LirNode rewriteFrame(LirNode node)
クラス CodeGenerator の記述:
Rewrite FRAME node to target machine form.

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

earlyRewritingMachineDep

public void earlyRewritingMachineDep(Module module)
Early time pre-rewriting of LIR.


peepHoleOpt

void peepHoleOpt(BiList list)
クラス CodeGenerator の記述:
Peep-hole optimizer. This method is dummy; Subclasses may override this.

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

rewriteJumpc

LirNode rewriteJumpc(LirNode node)

rewritePrologue

LirNode rewritePrologue(LirNode node,
                        BiList post)
Rewrite PROLOGUE

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

rewriteCall

LirNode rewriteCall(LirNode node,
                    BiList pre,
                    BiList post)
クラス CodeGenerator の記述:
Rewrite CALL. Subclasses may override this.

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

lowlong

LirNode lowlong(LirNode exp)

highlong

LirNode highlong(LirNode exp)

rewriteAggregateCopy

LirNode rewriteAggregateCopy(LirNode node,
                             BiList pre)
Rewrite AGGREGATE COPY

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

rewriteEpilogue

LirNode rewriteEpilogue(LirNode node,
                        BiList pre)
Rewrite EPILOGUE

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

isComplex

boolean isComplex(LirNode node)
Return true if node is a complex one.

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

is8bitConst

boolean is8bitConst(LirNode node)

jmac1

java.lang.Object jmac1(java.lang.Object x)
Return aggregate size & 0xfff.


jmac2

java.lang.Object jmac2(LirNode x)

jmac3

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

jmac4

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

jmac5

java.lang.String jmac5(java.lang.String code,
                       java.lang.String arg)

jmac6

java.lang.String jmac6(java.lang.String code,
                       java.lang.String arg1)

jmac7

java.lang.String jmac7(java.lang.String code,
                       java.lang.String arg1,
                       java.lang.String arg2)

jmac8

java.lang.String jmac8(java.lang.String s,
                       java.lang.String code,
                       java.lang.String arg)

jmac9

java.lang.String jmac9(java.lang.String mode,
                       java.lang.String code,
                       java.lang.String arg1,
                       java.lang.String arg2)

jmac10

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

jmac11

java.lang.String jmac11(java.lang.String x,
                        java.lang.String y)
Expand _set macro s.t. copying 32bit constant x to y.


jmac12

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

jmac13

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

jmac14

java.lang.String jmac14(java.lang.String sign,
                        java.lang.String x,
                        java.lang.String y,
                        java.lang.String z)

jmac15

java.lang.String jmac15(java.lang.String sign,
                        java.lang.String x,
                        java.lang.String y,
                        java.lang.String z)

jmac16

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

jmac17

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

jmac18

java.lang.String jmac18(java.lang.String x)

jmac19

java.lang.String jmac19(java.lang.String x)

jmac20

java.lang.String jmac20(java.lang.String x)

jmac21

java.lang.String jmac21(java.lang.String x)

jmac22

java.lang.String jmac22(java.lang.String x)

jmac23

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

jmac24

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

jmac25

java.lang.String jmac25(java.lang.String x)

jmac26

java.lang.String jmac26(java.lang.String x)

emitComment

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

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

emitBeginningOfModule

void emitBeginningOfModule(java.io.PrintWriter out)

emitEndOfModule

void emitEndOfModule(java.io.PrintWriter out)

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

emitData

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

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