Started separation between Low level and higher level instructions

This commit is contained in:
Artur K
2012-02-29 18:13:43 +01:00
parent 0eab9d1db5
commit 6b7d3f6209
26 changed files with 747 additions and 730 deletions

View File

@@ -273,13 +273,13 @@ int LOCAL_ID::newLong(opLoc sd, iICODE pIcode, hlFirst f, iICODE ix,operDu du, i
if (f == LOW_FIRST)
{
pmL = (sd == SRC) ? &pIcode->ic.ll.src : &pIcode->ic.ll.dst;
pmH = (sd == SRC) ? &atOffset->ic.ll.src : &atOffset->ic.ll.dst;
pmL = (sd == SRC) ? &pIcode->ll()->src : &pIcode->ll()->dst;
pmH = (sd == SRC) ? &atOffset->ll()->src : &atOffset->ll()->dst;
}
else /* HIGH_FIRST */
{
pmH = (sd == SRC) ? &pIcode->ic.ll.src : &pIcode->ic.ll.dst;
pmL = (sd == SRC) ? &atOffset->ic.ll.src : &atOffset->ic.ll.dst;
pmH = (sd == SRC) ? &pIcode->ll()->src : &pIcode->ll()->dst;
pmL = (sd == SRC) ? &atOffset->ll()->src : &atOffset->ll()->dst;
}
if (pmL->regi == 0) /* global variable */
@@ -330,16 +330,16 @@ boolT checkLongEq (LONG_STKID_TYPE longId, iICODE pIcode, int i,
iICODE atOffset(pIcode);
advance(atOffset,off);
pmHdst = &pIcode->ic.ll.dst;
pmLdst = &atOffset->ic.ll.dst;
pmHsrc = &pIcode->ic.ll.src;
pmLsrc = &atOffset->ic.ll.src;
pmHdst = &pIcode->ll()->dst;
pmLdst = &atOffset->ll()->dst;
pmHsrc = &pIcode->ll()->src;
pmLsrc = &atOffset->ll()->src;
if ((longId.offH == pmHdst->off) && (longId.offL == pmLdst->off))
{
asgn.lhs = COND_EXPR::idLongIdx (i);
if ((pIcode->ic.ll.flg & NO_SRC) != NO_SRC)
if ( not pIcode->ll()->isLlFlag(NO_SRC) )
{
asgn.rhs = COND_EXPR::idLong (&pProc->localId, SRC, pIcode, HIGH_FIRST, pIcode, eUSE, off);
}
@@ -371,15 +371,15 @@ boolT checkLongRegEq (LONGID_TYPE longId, iICODE pIcode, int i,
iICODE atOffset(pIcode);
advance(atOffset,off);
pmHdst = &pIcode->ic.ll.dst;
pmLdst = &atOffset->ic.ll.dst;
pmHsrc = &pIcode->ic.ll.src;
pmLsrc = &atOffset->ic.ll.src;
pmHdst = &pIcode->ll()->dst;
pmLdst = &atOffset->ll()->dst;
pmHsrc = &pIcode->ll()->src;
pmLsrc = &atOffset->ll()->src;
if ((longId.h == pmHdst->regi) && (longId.l == pmLdst->regi))
{
lhs = COND_EXPR::idLongIdx (i);
if ((pIcode->ic.ll.flg & NO_SRC) != NO_SRC)
if ( not pIcode->ll()->isLlFlag(NO_SRC) )
{
rhs = COND_EXPR::idLong (&pProc->localId, SRC, pIcode, HIGH_FIRST, pIcode, eUSE, off);
}