coins.ir.hir
インタフェース AsmStmt

すべてのスーパーインタフェース:
java.lang.Cloneable, HIR, HIR0, IR, IR0, Stmt
既知の実装クラスの一覧:
AsmStmtImpl

public interface AsmStmt
extends Stmt

 The C front of COINS accepts following asm statement:
   asm("#param paramDecsriptionList \n"
       "#clobber destroyed-register-list \n"
       asmInstructionSequence ,
       actual-parameter-list );
 where
   paramDescriptionList -> paramDescription
       | paramDescriptionList , paramDescription
   paramDescription ->
         %register    // input parameter variable (rvalue)
       | w%register   // output parameter variable (lvalue)
       | m%register   // input/output parameter variable (lvalue)
       | s            // constant representing static address
       | a            // constant repreZsenting automatic variable address
   destroyed-register-list -> %register // register contents is destroyed
       | destroyed-register-list , %register
   asmInstructionSequence ->
         "asmInstruction \n"
       | asmInstructionSequence "asmInstruction \n"
   actualParameterList ->
         expression   // expression representing actual parameter
       | actualParameterList , expression
 The %register represents a register or a class of registers
 defined in the TMD.
 The expression representing an actual parameter is
 evaluated and its value (in case of rvalue) or address
 (in case of lvalue) is set as the contents of
 corresponding input parameter register.
 1st parameter register is represented as %1,
 2nd parameter register is represented as %2, ...
 in asmInstructions.
 The asmInstruction is an assembly language instruction
 of the target machine.
 The asm statement of COINS is not compatible with
 that of gcc.
 The asm statement is represented as AsmStmt in HIR
 as follows:
  AsmStmt   ->
    ( asmCode attr  // Asm statement.
      StringConst @ // String constant representing
                    // parameter description pragma,
                    // clobber specification pragma, and
                    // assembly language instruction sequence
      HirList @ )   // List of l-value expressions (variable nodes,
                    // pointer expressions, etc.) and arithmetic
                    // expressions representing actual parameters.

 The above StringConst expression is the concatenation of
   paramDescriptionList, destroyed-register-list, and
   asmInstructionSequence.

C program example:

 int  y = 1, vec[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 int printf(char*, ...);
 int main() {
   int autov = 2, i = 3, x;
   // x = vec[i-1] + autov; y = y + y;
   asm("#param a,s,%I32,w%I32,m%I32\n"
       " mov %2(,%3,4),%4\n"
       " add %1(%%ebp),%4\n"
       " add %5,%5\n",
       &autov, vec, i-1, x, y);
   printf("x=%d y=%d\n", x, y);
   return 0;
 }

HIR corresponding to the example:

 (asm      31 void line 8
   "#param a,s,%I32,w%I32,m%I32\n mov %2(,%3,4),%4\n add %1(%%ebp),%4\n add %5,%5\n">
  (list 33
   (addr     34 
    )
   (decay    36 
     vec>)
   (sub      38 int
    
    )
   
   ))


フィールドの概要
 
インタフェース coins.ir.hir.HIR から継承したフィールド
OP_CODE_NAME, OP_CODE_NAME_DENSE
 
インタフェース coins.ir.IR から継承したフィールド
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF
 
インタフェース coins.ir.hir.HIR0 から継承したフィールド
FLAG_C_PTR, FLAG_CONST_EXP, FLAG_INIT_BLOCK, FLAG_LOOP_WITH_CONDITIONAL_INIT, FLAG_NOCHANGE, FLAG_NONTERMINAL, OP_ADD, OP_ADD_ASSIGN, OP_ADDR, OP_AND, OP_AND_ASSIGN, OP_ARROW, OP_ASM, OP_ASSIGN, OP_BLOCK, OP_CALL, OP_CMP_EQ, OP_CMP_GE, OP_CMP_GT, OP_CMP_LE, OP_CMP_LT, OP_CMP_NE, OP_COMMA, OP_CONST, OP_CONTENTS, OP_CONV, OP_DECAY, OP_DIV, OP_DIV_ASSIGN, OP_ELEM, OP_ENCLOSE, OP_EQ_ZERO, OP_EXP_STMT, OP_EXPLIST, OP_EXPREPEAT, OP_FOR, OP_IF, OP_INDEX, OP_INDEXED_LOOP, OP_JUMP, OP_LABEL, OP_LABEL_DEF, OP_LABELED_STMT, OP_LG_AND, OP_LG_OR, OP_MOD, OP_MOD_ASSIGN, OP_MULT, OP_MULT_ASSIGN, OP_NEG, OP_NOT, OP_NULL, OP_OFFSET, OP_OR, OP_OR_ASSIGN, OP_PARAM, OP_PHI, OP_POST_DECR, OP_POST_INCR, OP_PRE_DECR, OP_PRE_INCR, OP_QUAL, OP_REPEAT, OP_RETURN, OP_SELECT, OP_SEQ, OP_SETDATA, OP_SHIFT_L_ASSIGN, OP_SHIFT_LL, OP_SHIFT_R, OP_SHIFT_R_ASSIGN, OP_SHIFT_RL, OP_SIZEOF, OP_STMT, OP_STMT_UPPER, OP_SUB, OP_SUB_ASSIGN, OP_SUBP, OP_SUBS, OP_SWITCH, OP_SYM, OP_TYPE, OP_UNDECAY, OP_UNTIL, OP_VAR, OP_WHILE, OP_XOR, OP_XOR_ASSIGN
 
メソッドの概要
 HirList getActualParamList()
           
 java.lang.String getInstructions()
           
 void setActualParamList(HirList pActualParamList)
          Set the list including actual parameter expressions. operand representing #param, #clobber
 void setInstructions(java.lang.String pInstructions)
          Set the 1st operand representing #param, #clobber and instruction sequence.
 
インタフェース coins.ir.hir.Stmt から継承したメソッド
addNextStmt, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, combineStmt, combineWithConditionalExp, copyPosition, cutLabelLinkOfStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getPreviousStmt, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isMultiBlock, isolateThisStmt, replaceThisStmtWith, setFileName, setLineNumber
 
インタフェース coins.ir.hir.HIR から継承したメソッド
addrExp, asmStmt, checkLinkage, conditionalExp, contains, copyInfListFrom, cutParentLink, exp, expList, expRepeat, forStmt, getExpId, getFlowAnalSym, getIndentSpace, getInfString, getIrName, getSourceNode, getSourceNode1, getSourceNode2, getSymOrExpId, getWork, hirNodeClone, hirSeq, hirSeq, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, irList, isEmpty, isStmt, isTree, nullNode, nullStmt, offsetConstNode, phiExp, repeatStmt, replaceSource, replaceSource1, replaceSource2, returnStmt, setChild1, setChild2, setChildren, setChildren, setDataStmt, setIndex, setIndexNumberToAllNodes, setParent, setType, setWork, subpDefinition, subpIterator, subscriptedExp, toString, toStringDetail, toStringShort, toStringWithChildren, undecayExp, undecayExp, undecayExp, whileStmt
 
インタフェース coins.ir.IR から継承したメソッド
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, print, print, removeInf
 
インタフェース coins.ir.IR0 から継承したメソッド
getChild, getChildCount, getIndex, getOperator, setChild
 
インタフェース coins.ir.hir.HIR0 から継承したメソッド
accept, assignStmt, blockStmt, callStmt, constNode, contentsExp, convExp, copyWithOperands, copyWithOperandsChangingLabels, decayExp, elemNode, exp, exp, expStmt, falseNode, finishHir, forStmt, functionExp, getChildNumber, getFlag, getFlagBox, getNextStmt, getStmtContainingThisNode, getType, hirClone, hirIterator, hirList, hirSeq, ifStmt, intConstNode, irList, isSameAs, jumpStmt, labelDef, labeledStmt, labelNode, pointedExp, print, program, qualifiedExp, repeatStmt, replaceThisNode, returnStmt, setFlag, setIndexNumberToAllNodes, sizeofExp, sizeofExp, subpDefinition, subpNode, subscriptedExp, switchStmt, symNode, trueNode, undecayExp, varNode, whileStmt
 

メソッドの詳細

getInstructions

public java.lang.String getInstructions()
戻り値:
the 1st operand representing #param, #clobber and instruction sequence.

getActualParamList

public HirList getActualParamList()
戻り値:
the list including actual parameter expressions. operand representing #param, #clobber

setInstructions

public void setInstructions(java.lang.String pInstructions)
Set the 1st operand representing #param, #clobber and instruction sequence.


setActualParamList

public void setActualParamList(HirList pActualParamList)
Set the list including actual parameter expressions. operand representing #param, #clobber