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.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 |
インタフェース 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.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