From 268a015d0122eaf665e6b44afe9c42b19e29952f Mon Sep 17 00:00:00 2001 From: Artur K Date: Sun, 26 Feb 2012 00:11:55 +0100 Subject: [PATCH] removed some more dependencies on array indices, refactored out forward Long Defs checking --- include/Procedure.h | 5 +- include/dcc.h | 4 +- include/locident.h | 3 + regression_tester.rb | 9 +- src/ast.cpp | 11 +- src/locident.cpp | 18 +- src/proplong.cpp | 371 +++++++++++++++++++++---------------- tests/inputs/BENCHFN.EXE | Bin 13350 -> 0 bytes tests/inputs/BENCHLNG.EXE | Bin 13645 -> 0 bytes tests/inputs/BENCHMUL.EXE | Bin 13242 -> 0 bytes tests/inputs/BENCHMUS.EXE | Bin 13241 -> 0 bytes tests/inputs/BENCHSHO.EXE | Bin 13266 -> 0 bytes tests/inputs/BYTEOPS.EXE | Bin 8494 -> 0 bytes tests/inputs/FIBOS.EXE | Bin 13191 -> 0 bytes tests/inputs/MIN.EXE | Bin 593 -> 0 bytes tests/inputs/ZORK2.COM | Bin 12928 -> 0 bytes tests/prev/BENCHFN.EXE.a1 | 109 ----------- tests/prev/BENCHFN.EXE.a2 | 108 ----------- tests/prev/BENCHFN.b | 89 --------- tests/prev/BENCHLNG.EXE.a1 | 242 ------------------------ tests/prev/BENCHLNG.EXE.a2 | 234 ----------------------- tests/prev/BENCHLNG.b | 158 ---------------- tests/prev/BENCHMUL.EXE.a1 | 101 ---------- tests/prev/BENCHMUL.EXE.a2 | 99 ---------- tests/prev/BENCHMUL.b | 38 ---- tests/prev/BENCHMUS.EXE.a1 | 91 --------- tests/prev/BENCHMUS.EXE.a2 | 89 --------- tests/prev/BENCHMUS.b | 38 ---- tests/prev/BENCHSHO.EXE.a1 | 113 ----------- tests/prev/BENCHSHO.EXE.a2 | 109 ----------- tests/prev/BENCHSHO.b | 59 ------ tests/prev/BYTEOPS.EXE.a1 | 58 ------ tests/prev/BYTEOPS.EXE.a2 | 62 ------- tests/prev/BYTEOPS.b | 28 --- tests/prev/FIBOS.EXE.a1 | 90 --------- tests/prev/FIBOS.EXE.a2 | 88 --------- tests/prev/FIBOS.b | 53 ------ tests/prev/MIN.EXE.a1 | 39 ---- tests/prev/MIN.EXE.a2 | 38 ---- tests/prev/MIN.b | 27 --- 40 files changed, 242 insertions(+), 2339 deletions(-) delete mode 100755 tests/inputs/BENCHFN.EXE delete mode 100755 tests/inputs/BENCHLNG.EXE delete mode 100755 tests/inputs/BENCHMUL.EXE delete mode 100755 tests/inputs/BENCHMUS.EXE delete mode 100755 tests/inputs/BENCHSHO.EXE delete mode 100755 tests/inputs/BYTEOPS.EXE delete mode 100755 tests/inputs/FIBOS.EXE delete mode 100755 tests/inputs/MIN.EXE delete mode 100644 tests/inputs/ZORK2.COM delete mode 100644 tests/prev/BENCHFN.EXE.a1 delete mode 100644 tests/prev/BENCHFN.EXE.a2 delete mode 100644 tests/prev/BENCHFN.b delete mode 100644 tests/prev/BENCHLNG.EXE.a1 delete mode 100644 tests/prev/BENCHLNG.EXE.a2 delete mode 100644 tests/prev/BENCHLNG.b delete mode 100644 tests/prev/BENCHMUL.EXE.a1 delete mode 100644 tests/prev/BENCHMUL.EXE.a2 delete mode 100644 tests/prev/BENCHMUL.b delete mode 100644 tests/prev/BENCHMUS.EXE.a1 delete mode 100644 tests/prev/BENCHMUS.EXE.a2 delete mode 100644 tests/prev/BENCHMUS.b delete mode 100644 tests/prev/BENCHSHO.EXE.a1 delete mode 100644 tests/prev/BENCHSHO.EXE.a2 delete mode 100644 tests/prev/BENCHSHO.b delete mode 100644 tests/prev/BYTEOPS.EXE.a1 delete mode 100644 tests/prev/BYTEOPS.EXE.a2 delete mode 100644 tests/prev/BYTEOPS.b delete mode 100644 tests/prev/FIBOS.EXE.a1 delete mode 100644 tests/prev/FIBOS.EXE.a2 delete mode 100644 tests/prev/FIBOS.b delete mode 100644 tests/prev/MIN.EXE.a1 delete mode 100644 tests/prev/MIN.EXE.a2 delete mode 100644 tests/prev/MIN.b diff --git a/include/Procedure.h b/include/Procedure.h index 72f1bdc..f78576e 100644 --- a/include/Procedure.h +++ b/include/Procedure.h @@ -120,11 +120,12 @@ public: void newRegArg(ICODE *picode, ICODE *ticode); protected: // TODO: replace those with friend visitor ? - void propLongReg(Int loc_ident_idx, ID *pLocId); + void propLongReg(Int loc_ident_idx, const ID *pLocId); void propLongStk(Int i, ID *pLocId); void propLongGlb(Int i, ID *pLocId); - int checkBackwarLongDefs(int loc_ident_idx, ID *pLocId, int pLocId_idx, Assignment &assign); + int checkBackwarLongDefs(int loc_ident_idx, const ID &pLocId, iICODE iter, Assignment &assign); + int checkForwardLongDefs(int loc_ident_idx, const ID &pLocId, iICODE beg, Assignment &asgn); void structCases(); void findExps(); void genDU1(); diff --git a/include/dcc.h b/include/dcc.h index 6f5db89..1142da3 100644 --- a/include/dcc.h +++ b/include/dcc.h @@ -204,8 +204,8 @@ Int power2 (Int); void inverseCondOp (COND_EXPR **); /* Exported funcions from locident.c */ -boolT checkLongEq (LONG_STKID_TYPE, iICODE, Int, Int, Function *, COND_EXPR **,COND_EXPR **, Int); -boolT checkLongRegEq (LONGID_TYPE, iICODE, Int, Int, Function *, COND_EXPR *&, COND_EXPR *&, Int); +boolT checkLongEq (LONG_STKID_TYPE, iICODE, Int, Function *, COND_EXPR **, COND_EXPR **, Int); +boolT checkLongRegEq (LONGID_TYPE, iICODE, Int, Function *, COND_EXPR *&, COND_EXPR *&, Int); byte otherLongRegi (byte, Int, LOCAL_ID *); void insertIdx (IDX_ARRAY *, Int); diff --git a/include/locident.h b/include/locident.h index a5f9941..b41527a 100644 --- a/include/locident.h +++ b/include/locident.h @@ -7,9 +7,12 @@ #pragma once #include +#include #include #include "icode.h" /* Type definition */ +// this array has to stay in-order of addition i.e. not std::set > +// TODO: why ? struct IDX_ARRAY : public std::vector { bool inList(iICODE idx) diff --git a/regression_tester.rb b/regression_tester.rb index eee5c67..6d530bf 100755 --- a/regression_tester.rb +++ b/regression_tester.rb @@ -7,14 +7,15 @@ def path_local(from) from.gsub('/','\\\\') end TESTS_DIR="./tests" -def perform_test(exepath,filepath,outname) +def perform_test(exepath,filepath,outname,args) output_path=path_local(TESTS_DIR+"/outputs/"+outname) exepath=path_local(exepath) output_path=path_local(output_path) filepath=path_local(filepath) - printf("calling:" + "#{exepath} -a1 -o#{output_path}.a1 #{filepath}\n") + joined_args = args.join(' ') + printf("calling:" + "#{exepath} -a1 #{joined_args} -o#{output_path}.a1 #{filepath}\n") result = `#{exepath} -a1 -o#{output_path}.a1 #{filepath}` - result = `#{exepath} -a2msc -V -o#{output_path}.a2 #{filepath}` + result = `#{exepath} -a2 #{joined_args} -o#{output_path}.a2 #{filepath}` puts result p $? end @@ -22,7 +23,7 @@ end #exit(1) Dir.open(TESTS_DIR+"/inputs").each() {|f| next if f=="." or f==".." - perform_test(".//"+ARGV[0],TESTS_DIR+"/inputs/"+f,f) + perform_test(".//"+ARGV[0],TESTS_DIR+"/inputs/"+f,f,ARGV[1..-1]) } Dir.open(TESTS_DIR+"/inputs").each() {|f| next if f=="." or f==".." diff --git a/src/ast.cpp b/src/ast.cpp index abd840e..a7351dc 100644 --- a/src/ast.cpp +++ b/src/ast.cpp @@ -48,17 +48,17 @@ void ICODE::setRegDU (byte regi, operDu du_in) case eDEF: du.def |= duReg[regi]; du1.numRegsDef++; - printf("%s du.def |= %x\n",__FUNCTION__,duReg[regi]); +// printf("%s du.def |= %x\n",__FUNCTION__,duReg[regi]); break; case eUSE: du.use |= duReg[regi]; - printf("%s du.use |= %x\n",__FUNCTION__,duReg[regi]); +// printf("%s du.use |= %x\n",__FUNCTION__,duReg[regi]); break; case USE_DEF: du.def |= duReg[regi]; du1.numRegsDef++; - printf("%s du.def |= %x\n",__FUNCTION__,duReg[regi]); - printf("%s du.use |= %x\n",__FUNCTION__,duReg[regi]); +// printf("%s du.def |= %x\n",__FUNCTION__,duReg[regi]); +// printf("%s du.use |= %x\n",__FUNCTION__,duReg[regi]); du.use |= duReg[regi]; break; case NONE: /* do nothing */ @@ -259,7 +259,8 @@ COND_EXPR *COND_EXPR::idLongIdx (Int idx) /* Returns an identifier conditional expression node of type LONG_VAR */ COND_EXPR *COND_EXPR::idLong(LOCAL_ID *localId, opLoc sd, iICODE pIcode, hlFirst f, iICODE ix, operDu du, Int off) { - printf("**************** is equal %s ***************** \n",pIcode==ix ? "yes":"no"); + //assert(pIcode==ix); + //printf("**************** Not EQUAL ***************** \n"); Int idx; COND_EXPR *newExp = new COND_EXPR(IDENTIFIER); diff --git a/src/locident.cpp b/src/locident.cpp index 2483a15..4ce2ca4 100644 --- a/src/locident.cpp +++ b/src/locident.cpp @@ -137,17 +137,19 @@ Int LOCAL_ID::newLongReg(hlType t, byte regH, byte regL, iICODE ix_) /* Check for entry in the table */ for (idx = 0; idx < id_arr.size(); idx++) { + ID &entry(id_arr[idx]); if (/*(locSym->id[idx].type == t) && Not checking type */ - (id_arr[idx].id.longId.h == regH) && - (id_arr[idx].id.longId.l == regL)) + (entry.id.longId.h == regH) && + (entry.id.longId.l == regL)) { /* Check for occurrence in the list */ - if (id_arr[idx].idx.inList(ix_)) + if (entry.idx.inList(ix_)) //count( return (idx); else { /* Insert icode index in list */ - id_arr[idx].idx.push_back(ix_); + entry.idx.push_back(ix_); + //entry.idx.insert(ix_); return (idx); } } @@ -155,7 +157,7 @@ Int LOCAL_ID::newLongReg(hlType t, byte regH, byte regL, iICODE ix_) /* Not in the table, create new identifier */ newIdent (t, REG_FRAME); - id_arr[id_arr.size()-1].idx.push_back(ix_); + id_arr[id_arr.size()-1].idx.push_back(ix_);//insert(ix_); idx = id_arr.size() - 1; id_arr[idx].id.longId.h = regH; id_arr[idx].id.longId.l = regL; @@ -306,7 +308,7 @@ Int LOCAL_ID::newLong(opLoc sd, ICODE *pIcode, hlFirst f, iICODE ix,operDu du, I * idx : idx into icode array * pProc : ptr to current procedure record * rhs, lhs : return expressions if successful. */ -boolT checkLongEq (LONG_STKID_TYPE longId, iICODE pIcode, Int i, Int idx, +boolT checkLongEq (LONG_STKID_TYPE longId, iICODE pIcode, Int i, Function * pProc, COND_EXPR **rhs, COND_EXPR **lhs, Int off) { LLOperand *pmHdst, *pmLdst, *pmHsrc, *pmLsrc; /* pointers to LOW_LEVEL icodes */ @@ -347,8 +349,8 @@ boolT checkLongEq (LONG_STKID_TYPE longId, iICODE pIcode, Int i, Int idx, * idx : idx into icode array * pProc : ptr to current procedure record * rhs, lhs : return expressions if successful. */ -boolT checkLongRegEq (LONGID_TYPE longId, iICODE pIcode, Int i, Int idx, - Function * pProc, COND_EXPR *&rhs, COND_EXPR *&lhs, Int off) +boolT checkLongRegEq (LONGID_TYPE longId, iICODE pIcode, Int i, + Function * pProc, COND_EXPR *&rhs, COND_EXPR *&lhs, Int off) { LLOperand *pmHdst, *pmLdst, *pmHsrc, *pmLsrc; /* pointers to LOW_LEVEL icodes */ diff --git a/src/proplong.cpp b/src/proplong.cpp index 21f8068..e30eb7b 100644 --- a/src/proplong.cpp +++ b/src/proplong.cpp @@ -56,6 +56,40 @@ static boolT isLong23 (Int i, BB * pbb, Int *off, Int *arc) } return false; } +static boolT isLong23 (iICODE iter, BB * pbb, Int *off, Int *arc) +{ + BB * t, * e, * obb2; + + if (pbb->nodeType != TWO_BRANCH) + return false; + t = pbb->edges[THEN].BBptr; + e = pbb->edges[ELSE].BBptr; + + /* Check along the THEN path */ + if ((t->size() == 1) && (t->nodeType == TWO_BRANCH) && (t->inEdges.size() == 1)) + { + obb2 = t->edges[THEN].BBptr; + if ((obb2->size() == 2) && (obb2->nodeType == TWO_BRANCH) && (obb2->front().ic.ll.opcode == iCMP)) + { + *off = std::distance(iter,obb2->begin2()); + *arc = THEN; + return true; + } + } + + /* Check along the ELSE path */ + else if ((e->size() == 1) && (e->nodeType == TWO_BRANCH) && (e->inEdges.size() == 1)) + { + obb2 = e->edges[THEN].BBptr; + if ((obb2->size() == 2) && (obb2->nodeType == TWO_BRANCH) && (obb2->front().ic.ll.opcode == iCMP)) + { + *off = std::distance(iter,obb2->begin2());//obb2->front().loc_ip - i; + *arc = ELSE; + return true; + } + } + return false; +} /* Returns whether the conditions for a 2-2 long variable are satisfied */ @@ -77,14 +111,16 @@ static boolT isLong22 (iICODE pIcode, iICODE pEnd, Int *off) } -/* Creates a long conditional <=, >=, <, or > at (pIcode+1). +/** Creates a long conditional <=, >=, <, or > at (pIcode+1). * Removes excess nodes from the graph by flagging them, and updates - * the new edges for the remaining nodes. */ -static void longJCond23 (COND_EXPR *rhs, COND_EXPR *lhs, iICODE pIcode, - Int *idx, Int arc, Int off) + * the new edges for the remaining nodes. + * @return number of ICODEs to skip + +*/ +static int longJCond23 (COND_EXPR *rhs, COND_EXPR *lhs, iICODE pIcode, Int arc, Int off) { BB * pbb, * obb1, * obb2, * tbb; - + int skipped_insn=0; if (arc == THEN) { /* Find intermediate basic blocks and target block */ @@ -109,7 +145,7 @@ static void longJCond23 (COND_EXPR *rhs, COND_EXPR *lhs, iICODE pIcode, assert(iter!=tbb->inEdges.end()); tbb->inEdges.erase(iter); /* looses 1 arc */ /* Update icode index */ - (*idx) += 5; + skipped_insn = 5; } else /* ELSE arc */ { @@ -135,31 +171,34 @@ static void longJCond23 (COND_EXPR *rhs, COND_EXPR *lhs, iICODE pIcode, pbb->edges[ELSE].BBptr = tbb; /* Update icode index */ - (*idx) += 2; + skipped_insn = 2; } - /* Create new HLI_JCOND and condition */ - lhs = COND_EXPR::boolOp (lhs, rhs, condOpJCond[(pIcode+off+1)->ic.ll.opcode-iJB]); - (pIcode+1)->setJCond(lhs); - (pIcode+1)->copyDU(*pIcode, eUSE, eUSE); -(pIcode+1)->du.use |= (pIcode+off)->du.use; + /* Create new HLI_JCOND and condition */ + lhs = COND_EXPR::boolOp (lhs, rhs, condOpJCond[(pIcode+off+1)->ic.ll.opcode-iJB]); + (pIcode+1)->setJCond(lhs); + (pIcode+1)->copyDU(*pIcode, eUSE, eUSE); + (pIcode+1)->du.use |= (pIcode+off)->du.use; -/* Update statistics */ -obb1->flg |= INVALID_BB; -obb2->flg |= INVALID_BB; -stats.numBBaft -= 2; + /* Update statistics */ + obb1->flg |= INVALID_BB; + obb2->flg |= INVALID_BB; + stats.numBBaft -= 2; -pIcode->invalidate(); -obb1->front().invalidate(); -obb2->front().invalidate(); -(obb2->begin2()+1)->invalidate(); + pIcode->invalidate(); + obb1->front().invalidate(); + obb2->front().invalidate(); + (obb2->begin2()+1)->invalidate(); + return skipped_insn; } -/* Creates a long conditional equality or inequality at (pIcode+1). +/** Creates a long conditional equality or inequality at (pIcode+1). * Removes excess nodes from the graph by flagging them, and updates - * the new edges for the remaining nodes. */ -static void longJCond22 (COND_EXPR *rhs, COND_EXPR *lhs, iICODE pIcode, Int *idx) + * the new edges for the remaining nodes. + * @return number of ICODE's to skip +*/ +static int longJCond22 (COND_EXPR *rhs, COND_EXPR *lhs, iICODE pIcode) { Int j; BB * pbb, * obb1, * tbb; @@ -174,7 +213,7 @@ static void longJCond22 (COND_EXPR *rhs, COND_EXPR *lhs, iICODE pIcode, Int *idx /* Adjust outEdges[0] to the new target basic block */ pbb = pIcode->inBB; - if (pbb->back().loc_ip == (*idx + 1)) + if (pbb->back().loc_ip == next1->loc_ip) { /* Find intermediate and target basic blocks */ obb1 = pbb->edges[THEN].BBptr; @@ -209,7 +248,7 @@ static void longJCond22 (COND_EXPR *rhs, COND_EXPR *lhs, iICODE pIcode, Int *idx pIcode->invalidate(); next2->invalidate(); next3->invalidate(); - (*idx) += 4; + return 4; } /* Propagates TYPE_LONG_(UN)SIGN icode information to the current pIcode @@ -236,7 +275,7 @@ void Function::propLongStk (Int i, ID *pLocId) switch (pIcode->ic.ll.opcode) { case iMOV: - if (checkLongEq (pLocId->id.longStkId, pIcode, i, idx, this, + if (checkLongEq (pLocId->id.longStkId, pIcode, i, this, &rhs, &lhs, 1) == TRUE) { pIcode->setAsgn(lhs, rhs); @@ -246,7 +285,7 @@ void Function::propLongStk (Int i, ID *pLocId) break; case iAND: case iOR: case iXOR: - if (checkLongEq (pLocId->id.longStkId, pIcode, i, idx, this, + if (checkLongEq (pLocId->id.longStkId, pIcode, i, this, &rhs, &lhs, 1) == TRUE) { switch (pIcode->ic.ll.opcode) @@ -265,7 +304,7 @@ void Function::propLongStk (Int i, ID *pLocId) break; case iPUSH: - if (checkLongEq (pLocId->id.longStkId, pIcode, i, idx, this, + if (checkLongEq (pLocId->id.longStkId, pIcode, i, this, &rhs, &lhs, 1) == TRUE) { pIcode->setUnary( HLI_PUSH, lhs); @@ -279,30 +318,32 @@ void Function::propLongStk (Int i, ID *pLocId) /* Check long conditional (i.e. 2 CMPs and 3 branches */ else if ((pIcode->ic.ll.opcode == iCMP) && (isLong23 (idx, pIcode->inBB, &off, &arc))) { - if (checkLongEq (pLocId->id.longStkId, pIcode, i, idx, this, &rhs, &lhs, off) == TRUE) - longJCond23 (rhs, lhs, pIcode, &idx, arc, off); + if ( checkLongEq (pLocId->id.longStkId, pIcode, i, this, &rhs, &lhs, off) ) + { + idx += longJCond23 (rhs, lhs, pIcode, arc, off); // + } } /* Check for long conditional equality or inequality. This requires * 2 CMPs and 2 branches */ - else if ((pIcode->ic.ll.opcode == iCMP) && - isLong22 (pIcode, pEnd, &off)) + else if ((pIcode->ic.ll.opcode == iCMP) && isLong22 (pIcode, pEnd, &off)) { - if (checkLongEq (pLocId->id.longStkId, pIcode, i, idx, this, - &rhs, &lhs, off) == TRUE) - longJCond22 (rhs, lhs, pIcode, &idx); + if ( checkLongEq (pLocId->id.longStkId, pIcode, i, this,&rhs, &lhs, off) ) + { + idx += longJCond22 (rhs, lhs, pIcode); // maybe this should have -1 to offset loop autoincrement? + } } } } -void checkBack(); -int Function::checkBackwarLongDefs(int loc_ident_idx, ID *pLocId, int pLocId_idx,Assignment &asgn) +int Function::checkBackwarLongDefs(int loc_ident_idx, const ID &pLocId, iICODE beg,Assignment &asgn) { - int idx; LLOperand * pmH,* pmL; iICODE pIcode; - for (idx = pLocId_idx - 1; idx > 0 ; idx--) + riICODE rev(beg); + bool forced_finish=false; + for (; not forced_finish and rev!=Icode.rend();rev++) //idx = pLocId_idx - 1; idx > 0 ; idx-- { - pIcode = Icode.begin()+(idx-1); + pIcode = (rev+1).base();//Icode.begin()+(idx-1); if ((pIcode->type == HIGH_LEVEL) || (pIcode->invalid == TRUE)) continue; @@ -313,28 +354,28 @@ int Function::checkBackwarLongDefs(int loc_ident_idx, ID *pLocId, int pLocId case iMOV: pmH = &pIcode->ic.ll.dst; pmL = &(pIcode+1)->ic.ll.dst; - if ((pLocId->id.longId.h == pmH->regi) && (pLocId->id.longId.l == pmL->regi)) + if ((pLocId.id.longId.h == pmH->regi) && (pLocId.id.longId.l == pmL->regi)) { asgn.lhs = COND_EXPR::idLongIdx (loc_ident_idx); - this->localId.id_arr[loc_ident_idx].idx.push_back(pIcode);//idx-1 + this->localId.id_arr[loc_ident_idx].idx.push_back(pIcode);//idx-1//insert pIcode->setRegDU( pmL->regi, eDEF); asgn.rhs = COND_EXPR::idLong (&this->localId, SRC, pIcode, HIGH_FIRST, pIcode/*idx*/, eUSE, 1); pIcode->setAsgn(asgn.lhs, asgn.rhs); (pIcode+1)->invalidate(); - idx = 0; /* to exit the loop */ + forced_finish=true; /* to exit the loop */ } break; case iPOP: pmH = &(pIcode+1)->ic.ll.dst; pmL = &pIcode->ic.ll.dst; - if ((pLocId->id.longId.h == pmH->regi) && (pLocId->id.longId.l == pmL->regi)) + if ((pLocId.id.longId.h == pmH->regi) && (pLocId.id.longId.l == pmL->regi)) { asgn.lhs = COND_EXPR::idLongIdx (loc_ident_idx); pIcode->setRegDU( pmH->regi, eDEF); pIcode->setUnary(HLI_POP, asgn.lhs); (pIcode+1)->invalidate(); - idx = 0; /* to exit the loop */ + forced_finish=true; /* to exit the loop */ } break; @@ -343,7 +384,7 @@ int Function::checkBackwarLongDefs(int loc_ident_idx, ID *pLocId, int pLocId case iAND: case iOR: case iXOR: pmL = &pIcode->ic.ll.dst; pmH = &(pIcode+1)->ic.ll.dst; - if ((pLocId->id.longId.h == pmH->regi) && (pLocId->id.longId.l == pmL->regi)) + if ((pLocId.id.longId.h == pmH->regi) && (pLocId.id.longId.l == pmL->regi)) { asgn.lhs = COND_EXPR::idLongIdx (loc_ident_idx); pIcode->setRegDU( pmH->regi, USE_DEF); @@ -359,12 +400,127 @@ int Function::checkBackwarLongDefs(int loc_ident_idx, ID *pLocId, int pLocId } /* eos */ pIcode->setAsgn(asgn.lhs, asgn.rhs); (pIcode+1)->invalidate(); - idx = 0; + forced_finish=true; /* to exit the loop */ } break; } /* eos */ } - return idx; + return rev!=Icode.rend(); +} +int Function::checkForwardLongDefs(int loc_ident_idx, const ID &pLocId, iICODE beg,Assignment &asgn) +{ + bool forced_finish=false; + auto pEnd=Icode.end(); + for (auto pIcode=beg; not forced_finish and ((pIcode+1)!=Icode.end()); ++pIcode) + { + iICODE next1(pIcode+1); + LLOperand * pmH,* pmL; /* Pointers to dst LOW_LEVEL icodes */ + int off,arc; + + if ((pIcode->type == HIGH_LEVEL) || (pIcode->invalid == TRUE)) + continue; + + if (pIcode->ic.ll.opcode == next1->ic.ll.opcode) + switch (pIcode->ic.ll.opcode) + { + case iMOV: + if ((pLocId.id.longId.h == pIcode->ic.ll.src.regi) && + (pLocId.id.longId.l == next1->ic.ll.src.regi)) + { + asgn.rhs = COND_EXPR::idLongIdx (loc_ident_idx); + pIcode->setRegDU( next1->ic.ll.src.regi, eUSE); + asgn.lhs = COND_EXPR::idLong (&this->localId, DST, pIcode,HIGH_FIRST, pIcode, eDEF, 1); + pIcode->setAsgn(asgn.lhs, asgn.rhs); + next1->invalidate(); + forced_finish =true; /* to exit the loop */ + } + break; + + case iPUSH: + if ((pLocId.id.longId.h == pIcode->ic.ll.src.regi) && + (pLocId.id.longId.l == next1->ic.ll.src.regi)) + { + asgn.rhs = COND_EXPR::idLongIdx (loc_ident_idx); + pIcode->setRegDU( next1->ic.ll.src.regi, eUSE); + pIcode->setUnary(HLI_PUSH, asgn.lhs); + next1->invalidate(); + } + forced_finish =true; /* to exit the loop */ + break; + + /*** others missing ****/ + + case iAND: case iOR: case iXOR: + pmL = &pIcode->ic.ll.dst; + pmH = &next1->ic.ll.dst; + if ((pLocId.id.longId.h == pmH->regi) && + (pLocId.id.longId.l == pmL->regi)) + { + asgn.lhs = COND_EXPR::idLongIdx (loc_ident_idx); + pIcode->setRegDU( pmH->regi, USE_DEF); + asgn.rhs = COND_EXPR::idLong (&this->localId, SRC, pIcode, + LOW_FIRST, pIcode/*idx*/, eUSE, 1); + switch (pIcode->ic.ll.opcode) { + case iAND: asgn.rhs = COND_EXPR::boolOp (asgn.lhs, asgn.rhs, AND); + break; + case iOR: asgn.rhs = COND_EXPR::boolOp (asgn.lhs, asgn.rhs, OR); + break; + case iXOR: asgn.rhs = COND_EXPR::boolOp (asgn.lhs, asgn.rhs, XOR); + break; + } + pIcode->setAsgn(asgn.lhs, asgn.rhs); + (pIcode+1)->invalidate(); + // ftw loop restart ???? + //idx = 0; + // maybe this should end the loop instead + forced_finish =true; /* to exit the loop */ + } + break; + } /* eos */ + + /* Check long conditional (i.e. 2 CMPs and 3 branches */ + else if ((pIcode->ic.ll.opcode == iCMP) && (isLong23 (pIcode, pIcode->inBB, &off, &arc))) + { + if (checkLongRegEq (pLocId.id.longId, pIcode, loc_ident_idx, this, + asgn.rhs, asgn.lhs, off) == TRUE) + { + pIcode += longJCond23 (asgn.rhs, asgn.lhs, pIcode, arc, off); + } + } + + /* Check for long conditional equality or inequality. This requires + * 2 CMPs and 2 branches */ + else if ((pIcode->ic.ll.opcode == iCMP) && + (isLong22 (pIcode, pEnd, &off))) + { + if (checkLongRegEq (pLocId.id.longId, pIcode, loc_ident_idx, this, + asgn.rhs, asgn.lhs, off) == TRUE) + { + pIcode += longJCond22 (asgn.rhs, asgn.lhs, pIcode); + } + } + + /* Check for OR regH, regL + * JX lab + * => HLI_JCOND (regH:regL X 0) lab + * This is better code than HLI_JCOND (HI(regH:regL) | LO(regH:regL)) */ + else if ((pIcode->ic.ll.opcode == iOR) && (next1 < pEnd) && + (isJCond (next1->ic.ll.opcode))) + { + if ((pIcode->ic.ll.dst.regi == pLocId.id.longId.h) && + (pIcode->ic.ll.src.regi == pLocId.id.longId.l)) + { + asgn.lhs = COND_EXPR::idLongIdx (loc_ident_idx); + + asgn.rhs = COND_EXPR::idKte (0, 4); /* long 0 */ + asgn.lhs = COND_EXPR::boolOp (asgn.lhs, asgn.rhs, condOpJCond[next1->ic.ll.opcode - iJB]); + next1->setJCond(asgn.lhs); + next1->copyDU(*pIcode, eUSE, eUSE); + pIcode->invalidate(); + } + } + + } /* end for */ } /* Finds the definition of the long register pointed to by pLocId, and @@ -372,129 +528,28 @@ int Function::checkBackwarLongDefs(int loc_ident_idx, ID *pLocId, int pLocId * Arguments: i : index into the local identifier table * pLocId: ptr to the long local identifier * pProc : ptr to current procedure's record. */ -void Function::propLongReg (Int loc_ident_idx, ID *pLocId) +void Function::propLongReg (Int loc_ident_idx, const ID *pLocId) { Int idx; iICODE pEnd; /* Process all definitions/uses of long registers at an icode position */ pEnd = this->Icode.end(); + const IDX_ARRAY &lidx(pLocId->idx); // for (int pLocId_idx : pLocId->idx) // WARNING: this loop modifies the iterated-over container. for (int j = 0; j < pLocId->idx.size(); j++) { - int pLocId_idx=std::distance(Icode.begin(),pLocId->idx[j]); + auto idx_iter=lidx.begin(); + std::advance(idx_iter,j); + //assert(*idx_iter==lidx.z[j]); + int pLocId_idx=std::distance(Icode.begin(),*idx_iter); Assignment asgn; /* Check backwards for a definition of this long register */ - idx = checkBackwarLongDefs(loc_ident_idx,pLocId,pLocId_idx,asgn); - /* If no definition backwards, check forward for a use of this long reg */ - if (idx > 0) + if (checkBackwarLongDefs(loc_ident_idx,*pLocId,*idx_iter,asgn)) continue; - for (idx = pLocId_idx + 1; idx < Icode.size() - 1; idx++) - { - iICODE pIcode(Icode.begin()),next1(Icode.begin()); - LLOperand * pmH,* pmL; /* Pointers to dst LOW_LEVEL icodes */ - int off,arc; - std::advance(pIcode,idx); - std::advance(next1,idx+1); - - if ((pIcode->type == HIGH_LEVEL) || (pIcode->invalid == TRUE)) - continue; - - if (pIcode->ic.ll.opcode == next1->ic.ll.opcode) - switch (pIcode->ic.ll.opcode) - { - case iMOV: - if ((pLocId->id.longId.h == pIcode->ic.ll.src.regi) && - (pLocId->id.longId.l == next1->ic.ll.src.regi)) - { - asgn.rhs = COND_EXPR::idLongIdx (loc_ident_idx); - pIcode->setRegDU( next1->ic.ll.src.regi, eUSE); - asgn.lhs = COND_EXPR::idLong (&this->localId, DST, pIcode,HIGH_FIRST, pIcode/*idx*/, eDEF, 1); - pIcode->setAsgn(asgn.lhs, asgn.rhs); - next1->invalidate(); - idx = this->Icode.size(); /* to exit the loop */ - } - break; - - case iPUSH: - if ((pLocId->id.longId.h == pIcode->ic.ll.src.regi) && - (pLocId->id.longId.l == next1->ic.ll.src.regi)) - { - asgn.rhs = COND_EXPR::idLongIdx (loc_ident_idx); - pIcode->setRegDU( next1->ic.ll.src.regi, eUSE); - pIcode->setUnary(HLI_PUSH, asgn.lhs); - next1->invalidate(); - } - idx = this->Icode.size(); /* to exit the loop */ - break; - - /*** others missing ****/ - - case iAND: case iOR: case iXOR: - pmL = &pIcode->ic.ll.dst; - pmH = &next1->ic.ll.dst; - if ((pLocId->id.longId.h == pmH->regi) && - (pLocId->id.longId.l == pmL->regi)) - { - asgn.lhs = COND_EXPR::idLongIdx (loc_ident_idx); - pIcode->setRegDU( pmH->regi, USE_DEF); - asgn.rhs = COND_EXPR::idLong (&this->localId, SRC, pIcode, - LOW_FIRST, pIcode/*idx*/, eUSE, 1); - switch (pIcode->ic.ll.opcode) { - case iAND: asgn.rhs = COND_EXPR::boolOp (asgn.lhs, asgn.rhs, AND); - break; - case iOR: asgn.rhs = COND_EXPR::boolOp (asgn.lhs, asgn.rhs, OR); - break; - case iXOR: asgn.rhs = COND_EXPR::boolOp (asgn.lhs, asgn.rhs, XOR); - break; - } - pIcode->setAsgn(asgn.lhs, asgn.rhs); - (pIcode+1)->invalidate(); - idx = 0; - } - break; - } /* eos */ - - /* Check long conditional (i.e. 2 CMPs and 3 branches */ - else if ((pIcode->ic.ll.opcode == iCMP) && (isLong23 (idx, pIcode->inBB, &off, &arc))) - { - if (checkLongRegEq (pLocId->id.longId, pIcode, loc_ident_idx, idx, this, - asgn.rhs, asgn.lhs, off) == TRUE) - longJCond23 (asgn.rhs, asgn.lhs, pIcode, &idx, arc, off); - } - - /* Check for long conditional equality or inequality. This requires - * 2 CMPs and 2 branches */ - else if ((pIcode->ic.ll.opcode == iCMP) && - (isLong22 (pIcode, pEnd, &off))) - { - if (checkLongRegEq (pLocId->id.longId, pIcode, loc_ident_idx, idx, this, - asgn.rhs, asgn.lhs, off) == TRUE) - longJCond22 (asgn.rhs, asgn.lhs, pIcode, &idx); - } - - /* Check for OR regH, regL - * JX lab - * => HLI_JCOND (regH:regL X 0) lab - * This is better code than HLI_JCOND (HI(regH:regL) | LO(regH:regL)) */ - else if ((pIcode->ic.ll.opcode == iOR) && (next1 < pEnd) && - (isJCond (next1->ic.ll.opcode))) - { - if ((pIcode->ic.ll.dst.regi == pLocId->id.longId.h) && - (pIcode->ic.ll.src.regi == pLocId->id.longId.l)) - { - asgn.lhs = COND_EXPR::idLongIdx (loc_ident_idx); - - asgn.rhs = COND_EXPR::idKte (0, 4); /* long 0 */ - asgn.lhs = COND_EXPR::boolOp (asgn.lhs, asgn.rhs, condOpJCond[next1->ic.ll.opcode - iJB]); - next1->setJCond(asgn.lhs); - next1->copyDU(*pIcode, eUSE, eUSE); - pIcode->invalidate(); - } - } - - } /* end for */ + /* If no definition backwards, check forward for a use of this long reg */ + checkForwardLongDefs(loc_ident_idx,*pLocId,*idx_iter,asgn); } /* end for */ } diff --git a/tests/inputs/BENCHFN.EXE b/tests/inputs/BENCHFN.EXE deleted file mode 100755 index f4849e94fd2b5a7c2d177d8300fae03701b75853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13350 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�TDFM|+eVaLmnUC~B! zWQ`DU3o2ug)wpvV(9njO^Sqg|9~DaT=Ey^F8Im-(eA(6ywGmXlOt=?iX{BX@OYdE# zkC>)rM=|IQ8qy&PJ712Bp&_rEB9}~koVW4jG0yXY*lxf*1nvXC_H61zHfxi%t0#KV zkIuNI4PG=E(1!gsG(+cu3N;^%#K_TJ^$sC&s8^jKG(H>IX(IlfGEpynN!>+Mm{N9xVR@3NrPJL=yePJ(lnB(*Am&fHz@&9E`=DLr9AkOTabXfjWIC0`= z=rlv6=v)48wSSL1i_m1(<){4qPqSrJTnoU(zV=p89m-!xwh#lx=8` zCfl@B{hOdSe{+xa#&`AL%nh7>%qWx~5-H^SJ$fdsX($^x$cOIWYYp{u`gY^3Eo$(u z)4Y>{y>{=g;9t|dj$p6kwFm#|@MZz|(t}6sCodX5;or62=d=f}i85{jX#h{8k{eEr zkH2W)<3B$BnBz3VlmiT7U9uIm@< zmnC<_F=sc$b8>FjBTI+o3*6ZgGc0JjX7|pkM}mIKRg=m8*-l=P)Oc@Rj%>wTW<{Od zL@)kM{h2veajR2ezf=;sHg?@D!E1tdQrf>_cZy3_ZOHfdMqU!LClPUl5)=a4s^&iKH87u9vd z)qM_iKN!rMa(Y*=sT)zb^Bis^&M~DaMOofsx=CqDqZoCQRm*}6z0R8jXE*)=hzoMa zCot`Fe}JMRW8d}4+h6vdbLo&9Y7)78JMQX593q?2apvX4bo;u+iUZeZZA2)~8xild-m?IYgW2Op9h6IM=i+VVkur^S;s@hTQ^)`5u?ekaE zH+a`np{lpxL2uO>2db~Bt*?@68|sto`k?=f*Hnpq|BZ_O!>T}`&~Ckd%?f-PY8p?;b$>J`#*e0A#1(xJPzN=s`?to97j!E1C|Arf$oqTHRN(+pQFA(cGT6@ zudZGNSCh;p)Wc^@WYcb)KI69AXU>{^$NU8ag+)%5nQ6)#O13AkOtYAoVCj1dgVf)t z!%}Sk*37K_%;bKQnPyK-O|{uGGo{Ro#FWg;^vtBp%)WAc+I3qu(bI4B{Xow$6DjI> zeZyNU{Z$03eW*PtK@bv!%oIJ>CI}gVkcJ;UlGSe4%aeul6fE~t!6?@YPnk}c&YJR* z3-n)~J^law?Jl(m-?uRK92*Hy0<4~W4_`Y=!v8L#-|lgSgncWp|4U176j5aGza&7G zc##0QV_gI!b`!e}kZlFP#R1E<0gOh|>;!-!0(N#It0s_$21lvaBqS5{nv67)Knl_* z>OK`|H39OJPZCH+T1x|FAYCFb1j$NKE)yx2z)++`1hSBRPGA_4WW_5R>0<)Jk-jEy z1JdU_Zcq1F)Vz zE>{uTU^jv913XJ$F~D;KiUEE`;0FLdCr|?LD*{UZ_7HFZyh7k^fO-=^DZrxy z$^e=Olmk3Y;2waD1l$0d2vh)UA+Qvng@6ZOD}iMItpx4`*g@bvfHMT{2RKJyIlyfK zKqbIT0uKPpCQt=1hrkMeJOV2L@(HX0m`9)*V1XH+2Hr1Res|OQ06uf(77V zfQtlH1E>V*047KPYXBw@s0Wx#z=s7v>%%T%HH!rNpnDLmgaAMnfxoY_4*r6czqDR& z46qjT;K$2M34VsZ^Td9S4lV@#VI18UM?V%vH^tG-ada?_-VjGW9!H1b=#6poKgQ9U z;^@tB^p-d}97ngr(MlY>HICjEN4Lh&PsGvNj=pAwN&N%w1IQmC%^sYGi={S0K z9Q{lj{o^?LCvo(%ar8gM(a*)vkFeoot&Ri)8$04mB0@|OqDu+_OFCOEWH6sFgaw66 zwp|#?o)xm#0bv+>L+I<|y2+wL6W+b1{%rI#M$b3nEeH-B(`&R~z8E5f9QJ-s?DJg_3LAa-tK*%${MAvczR z6$*mZsgYyT>*I|FE0o4TeOiQ|X|c*Fu}&xG{pl^h2gOsP zU&y7`PmFzYV(k!L1tt!sIE$~KM?4l3zxxHthStDJ?5V6=8IWtLRh-lUKHh4d z+~BQ#wA$OiDyvpBcx6_&uyn~iu6eAoW(Lx9q+5}uvC1`7we@JSXh~6N>5@{`*M+ZI zuJS$@KnYNFePAs*l4IRhuEo~1vc_9oUAdyJVI>B}nHm65>S!_uu5Ez+V#N^OP=deS zP(mf{Fs8YyS7ORg3B+xKiQ5MgGy4fl4(Z#NBg{{&w}GY+sJQ+?1Nf?Apse;$($!iY zF%hWt`f%L=)ZklF^{_rBP%UmoF!^3@Jxr!@_O#iv@F{~0$mO+bsCDH-)m3X(RQYs_ ziLDFJJnFf!F5RH={$k3b(&{zqe3f;zYii{(mqFl0K(4K->mz+tf$ErSdfoapwS!5Y zTqXN`M$45A^|H62&LGN{lo_CE)x&;>fRyFwg zqy{Xai=y&|GB;!+Yd36=P))6t!xwE>JZva+5gex>}#TGEzJhRv?= z0a3de-8|$~we`Aot7Bw?Uml=KtE=h?0&@Rkm%)U}8&>tx#whX%eFo~PAU9^h+W?^m z)YN*BQ!uSePYa4l3hr{2Of6tB#Hs?UY9%w~eiie$`@1i{Bph459SvaFTpsai&;Ur$5q6fi;9cNjQ4cr zEGsHn%oY}v7qCTT^UKRU)Qfw;Jx;dN=`6md>@J3-R;a(`vx?G1w1%&aP(h?4AT7v88)WE|*p`%_QVX`w&y!T?I+A5A$s5A266&)Bg@i4*&mloP)-`_eXDK#_i zbN_swXP)<@JLk9d=UQv8z1H44{qE|WhIA${J7bLVdxQYq^h`uDuztH|g8?WcP~QK4 z{_!;M+6BXmP)48O;LP_XC^H16WZlZzPQSQ|?T~h|P}U9>nsI=2OM77);cpw>T+qUl zZsp`5-kiN<{@gjfvDwN>A#iQJFE#M_CmhuRQMXSd@b$0HRW8Y%Yw~>zhW=!WH~3>Iu3rP{JjYkAAE7G ztw;HyKeuB>o787`{g~-chLrRErTr;9h-49midwyZuwxRIgNo2J|j<>H~+*vuio!#-?giw|YmHJt`s1ch%Jj&Wl8qo-%iM2}_5diUh z*3PEvINEmlwN-}qCfwYKE~dPdAv55tb`fy14o!fKI+Oqd1UqT67<;$#;KF|skkNT4 z3!J!^E=Pp78zI(I&e%%jeDHjFt7E{~zQ^DU-#^Cf=Kd)6547(C`BqZ!O{vv!-r4?J zPzzDm>bU4^{~d^25Z#VzjCDKu3@j4C`w9`4L3A+1^_Ai{Z**K7?fTm2xIEf*CFJ@l z~g<+-A$FoHK*@*D#w=TO>L+<(6PH7KXm2E8et-QNlI zx)i@?yV95*jIQz<50|sh><&ZA<3|kp_NvLfXM)j54PSOk9R|*ot{3;PcFt9{=KdoB zqqeG5$;uXvpW{y*Grf>4@RV%9*5Olm#*G5c$U?FU+%JY77z{A5|oAK?qn>QMh|>yXWh_gg!Bh9z4+oz-#m+?WH)Zk;HP6es52=Q9WL zC;Ef~%WPLVBkKp<#-p&yE@LR`akj+xk#bo%pQCy{S3V2P*vihOg#0Y{mN5H(wd2!k z^2OYakb}+O*>4&ZIFozAOAT(N4}(q4$}+dXQ{`S6xb(A|l|G5jZe!u8hTxlma?1cnv^??y^2Fx7!pH`!V9U? zSPIQfl~juoH8x2hpP+P^M5eNMOR$jJGllalXBn19_$qU|m5aeB_le*o6Fr0q1k|Ap z(G6&=b!^y##{d3}#$!UW)3ven=CN^yF>K?qDabGTX{6Okx5>t)^l_yxxFB6(K682a zS?*RBE3?xir3-4mT@jTN!6Uci9r27PcZDt7?N%o%VqUi=#TEX2)XhbGgj7YA^3cfl zetGyN^bnU6Tqu9o@+C9m9r2o9e2!sITeq}_S@e~l>5=NVB%|~k3-&PO?JaLG1Awgu zzTx*?X&dtYwhb+dpU^n*9-f98f6JB6VmYvMSGlrAROTpMAx9Lbcd4+D$zWH#nev;h zs!jQ1Y2Yra&&W}ss~83Zw-Y7Sv9z&5V~g7rwwv8hg^AW~QLxEs@TCUxS(D8b{vm&Q zszVyFn?{qdHnC5T-EWd}j2STw%B54tAv~-76sJ=M`(>&a1aTV1jH6zsHItOu}cKFxsYhOFToS`P z#bp&pR-V+D!V9d*eb$zx{2+_`fpM|X3`SB7vMt_GwofzWb@^`BS$>8=hdvY7<%8`^aO%RvqkuEF1FGB3FdgcPak-C0 z;S-&$4jz*_lcb(+U~;zJzdPiRpmUNO&P%h~@o;l!LoFL6v@}51MS_LawYKD8dZK1} zsTkSFWSHGqqk9GH&c=P`b)zGLFIOCvh4TgGNrpa-pX=SWL4*-v>lN9}^rb^9ycIJg z!S-SEiIoGeRmXr@y;CV3Q2bJsS&1rV1`gzplcyt0nf9N(tloI`qEs56Tk38Bb$73M z0Q0jyuiq!AKUD3d?E-W5o*LibyoajnL_o1+hPlx{sjb@*po z?``_9-fkGy+X(a)>&XN-OkLN-x5%laX);Y>>=vecc5vZvU5<2Wl{K}et|G<0a3${E z$wYK59bDYvunun~sAgxl;mXrPet)8?TvD2>Fo-plVE^QXRe^rNQ>r+Ul;RZIJCBVD zz`SK!mudRa-c!9NgQr-l|IE3OPv-RWUV5_k()M)6xe@ALi2{Tx`R~@^Grgyb|2a_H zBHn8CisC%gC^*FZXD__W_L~)lH6AaLw7qtd#p;7$ichQ11Y$hxeI?BM%LeDmmCo>e z*!^h{OUo5CgRs8Lw6cYNuMFYFI<)Q8s*TmEy|!0Wjj#PkJY-@!V`qRv-@*~#dGX-F z_a;OxT!O7)on6~|FUVuH`A`C;0@FS)Jux5ZdUI!G!&5YqEo9r65UWBGrp8?(k=EC$75G3mz@ zHqsVuSU4`H;DbGCQ&bl^TOH@Z(%}wEiy0dGL)7iob}evc+i)#Fn}<&#o0-O^JXaHM z79`2*_U4e3$*%BU2T4kro$_*6xE@9S+ON%`m$DbCcd9d?@-gvohV+iGnGzeF&k5fZ z8=KlB=|jIWY=p8d87!YMBCkT~++j*9~=T|MCw`&+suzJ>228a_f8bFOdbww&Jw zAKmTv6=PkFmz>>>C^qu8hc|GAl3&7MMjn+vMNZW_YrYVEnX6w$8pY7>{QLk4 zzM#sv?}XZ99%_4tZ*TMR?yYs4<9idnRl|W4PbOCKD4Q+oH9 z%i3p7+M={b*ccdO4Shk3X;6Pe_&i}jeS+|(fx}*&Ba7SjdU>Rg2Y>Mp|Kt@@#KWnM z9q1uW)e3sIq6za&plr)4hR8iU@`RC&PNtwk6as^ScSH!%yh11Jz@X^+QwUN;--=8n z%KO19V&rDN>(-h3P_tqDE5bI^wRJT19RE}~cKp-hpBj%CkQ3>TQrn+zLtB&{9A3JK zM?Q|y=&4}pgXk6@EH$uu0d!|nLzEd{p#L@csztTFiVgp(ss9=gPIqnfa@MtVBWK(9 z)^d&Q+#Yq*t5(W04COt&bZN*hk*KM3ZWsfyNo+m*2$=EZ;&gIb@bD(ieABflZ>!_y z#s{x*IYU8%DHgQ&?Mzkpt-a+)_+JLkUX4TsiCwY8S>DpU&)I^JoTcIKUd=Eodm&y= zvoVrxz(p60j!|0?i{ZQZoFz*_IJ%%qJN9-lGQ%7mG5GSl{dgM&yG*($ByxW%_6s>z zx4ln&<{fVql;hY$qq`xQXnHctB*d&ghfKIBhe@_SmJdxV#kz>Q4;^G;IAKL?m>#U7yB zF@W9V4gbsxAT2~%nQFlcXF`dtt!TSvaELme#1phRPT30^>1j#}mkeYF=1=z-mgO98 z5<`1s-h%1Ga!aRdIVJdOnHz%0W-GF{o5GU^lwNIuo~z^SCXJc-Cg#g%`9&=c4AkQ! zcNkThrS7e0#?+g41_n0Erog}|Upmd#!sW}UL*X&40%Jz3SK z=q#Q3kyD6CWeqW;^r|?h2;2>_*Nhq?a7pS4PeZ8G*^EU{+Z7xdZot`TfGZdCFpkd@ z&gazj3GUWUxU~Dg;-F(+`?Fcj_N|tLUB@&EKPTxb^)y1yxSdK<(iO)EyKJUeOcFbl z`B`QF0Wn4KTPcv-k9cw4zNfh3v=)R!MAybCHokdQ;6E0d48EM*){i!423{vTYIvpQ z&m)f;(WI2SBwYIzpH_c^ZPdRY#~IIw;AT@cc00~+-sL#K4(tp0txwr_AK^y0_X~sLjQS)>EUJQUQT+kF1#E)?)h9lQ zG;mP%$R-?yPUrMMI|g}0WGz2zVQTVWau$bEnQA=DSZ}wT`9$iV)$w0A!k>03jx$qu zvs3B9B+vy6oi!dX2H#8xHvJcC%A~%0Be~;bcw6)(5TY#XdMUCu+Gvby6e2Dm%vj`M z+__%Y(3a{myqU5e6-x5w$zyOCk~F-0^^T9!@l?KAxEE!qC8fhl?_I5pm>SNEV$fYQ zq+J$vzZ987LtZmP&KcsIxAW#njx)p9uE#wD?gPN~Tuyl66@ z1^aDi1~*F1^6&yQ5+iR7hVK+2uMdWEg~n$iyA8zO9s~8_lftdkg(j9fRm(E$ht<#_ zg}X$z8A7C4J2sElty$FWCKE3{(|m%8b*nMMkhEq-9DpMC4(d2OXHfBy@>0SQJ9el&c|0MUh)z@=+4v7r&&{$Y<&-E7W)tIY0qVF``-VzS{Wu|9ZV9@Hh zA@G+`9(!O=@>m0Zv3oLryrTkdS&yI9Kf)i?-{o`!u8J~l18D$vq=M^Cj%Ob=@$BCt z{imrkpw9G63iOZgrv>__HJAd36vlx1Ey_uncgkzQy?fuQOcn3Fs$SDB*w0I@@-9a| z#dC6Q*dt4?PZhXhAZA$5boIX7S2_be(-nik_xWyKoYZ)4evWL$TxLWa{X{SSM*Z12 zS8%ISY&};TygIqzw!l@vGcA9nuQqTs)mKH;bFWv=-z=Bpuab*Zc_#)(WTSmLe(jE% zEiWF(>3BNwODqJIKeO9mwKCr%>f^%oK9Fl+=t#_8<(m!yUgic2zdL*}y4&;eUe&s{ zx7upFIQp9JR%%&vy`@&`Xmq#tV|Ciz-akFH?P%{=WAErUo=W@BcQ@6wC)9lobw3== zoN{7sps62Gx%V_~B~CM?DMeW`V7N(XN~IWelUdDx4ZX&j1xG)AmBa-(+aq5nT{(H{(n=Q5_%5H~7+Hx0Y5qv=^9AFhUi0676H?K&$^k7XL2u zdDhlXUt*tbUsAv65l_v756Sjh)=jnFe&^h|_Qmy{+RD21_GNW)?F?4ztF5(fs;{Y& zt338fueavGx{XzJayoYUasRh>hD4wLt=2zY`IOrAtZH-BI-guq_n;k=y$1Tzl;^cFDy398f697Im7@hg zG)WeVC4G!(G|w=N5^yZO{+LYHv5rRaNdj(q@QmhM5KJSf0iga&qSqwQY>$yX&~GY| zJ^oCfCr(^{8y0@^5r&>ve!BLEf9KIFWNHt@_?w5y?O@^m^)q7FfBj5@UaSKBFOdGs z0}YAeB>N8NCAij)KdS*3C+iQkz>(+J#-G=sn_qz4G(BAq2szK!%bfjb}~{X-O+jdYQ~9HbwR zlyi}uC2%K_%q|$%Jb=vv@&FnM>+SBz+M8&0QM314#2YnmIFLTpa|f30^bGrDS={uUl3RU zu%Cbv;MWB10jM(olmI+RpcJ5qKpDXI39JNooPY~pD}i!=?F3c>#ijppC%2 z0J{j>2hc&_et;tc)&Sfn08{{E5qJQ=PM{KCB7wC4lL@Q?$R@BJ;1&W^0Mm>B)c_kr zfCm9~5qJn-4}lthw@m;W0FDxP7~mLzT7XmuU?V^pfjWS60$wZ#T1-|Mt63!A13iE+ zCHMjQ2s8j(Ca@XcB7sK$&J+0C=8rO3N+OfKhdLVAgxB!L!we%f!{O-e#=ssMUI^Tj zKsP7QfdqO>0{#62I+#E|o-xZ%d%JC(xk;x+Q^D66hTXbZY|LmOwv|K<`YT zpG=^4CD6MQ=sgMa4-@FU3G`D5^u7f8=>+6J>n#~b1Sb>nq?h(ea8etrJL>SMW6mDeyN4SZ- zA!M-=!p$rqOk{<|No=LD9#%`wHA98rpO_gIj7M-AD3|gK!>rn%1uCkb#Yt2ZSO6O| zvSt$zwAx}BSSTQ9x#&3-MqT3@4^|n4PSmG$1sWMZsGk(0IY+Dktp!W1QEIGmO03gc zwEnaf=$FE!-mf_}h%NTciM2!c6qq=c!YJN?7SLEg{N@|~6*x)jNgG;26&36Ja&_gy ztfHc7bB&Cbr^+kWd#WC-^3=16%C+?#nH4N8S+UZ&kX3A~tf@nlWh)9xN>-GxcoT1x zTg}O^Xe_v)z`_M`dXbRTT!Zm%Jmz3URlT0HJeKzyVlWS zr?;}YO2_DBV~m&UT3BE2jY|z!NH;)b^`$PzM(aSgPD0i7o2oPo1IHjqSF2@u<%e~k zuby>vWD@J-M>dhRyfUnLqZf$URcnSLudk`ov|AM;>wWTdx}>VIc8Omen(R^-S6Th~ zAzB|rUaQSOZ6)N!OnB-c6oKj*4|0~wEY;HD!r~=&7Zop^v4q7TtMs$VbxfcA_1FTf z#m2}BBdL&C^`?3+Uh%4E755p1tCp3qy9*aNiwcWbX<^x-lBF(s7Z$smth8)7WiKkz zYJGQ6QPB#FSF)TfDRVmunPXW|VX6K-i#bXQ3zxH{g=OfwbWvHEn|g6AUg=<~9FC%u zrFS!|#sckY5i2iQR#vEgFJeVn%OYC)Sgejk%UR(H2a7e*)~$nKK`)`U+HxLR%#M=6 jLRPwDQL#h&F2?#Ms%%9;>|La-S5{V7RK!*mYs~!*`FWF| diff --git a/tests/inputs/BENCHMUL.EXE b/tests/inputs/BENCHMUL.EXE deleted file mode 100755 index eb1720ef798ab9ba23ac76b9c9bbdc9e238c5ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13242 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 diff --git a/tests/inputs/BENCHMUS.EXE b/tests/inputs/BENCHMUS.EXE deleted file mode 100755 index 1206a25a986520f23e1cd5763116bd4d7a58eb2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13241 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 diff --git a/tests/inputs/BENCHSHO.EXE b/tests/inputs/BENCHSHO.EXE deleted file mode 100755 index c400fccd6c3f437af1e86f60f6d40959049c500e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13266 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 diff --git a/tests/inputs/BYTEOPS.EXE b/tests/inputs/BYTEOPS.EXE deleted file mode 100755 index 434edc723b48bbe510b9c7515931f77482de048a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8494 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 diff --git a/tests/inputs/FIBOS.EXE b/tests/inputs/FIBOS.EXE deleted file mode 100755 index baa7d40c7a30e3eff7be7f4a736255c90cb67b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13191 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 DFniAC diff --git a/tests/inputs/MIN.EXE b/tests/inputs/MIN.EXE deleted file mode 100755 index f0eb4bb1faef73c6b81b5df24b75638e3cd02f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 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 B7{CAk diff --git a/tests/prev/BENCHFN.EXE.a1 b/tests/prev/BENCHFN.EXE.a1 deleted file mode 100644 index 0858e4b..0000000 --- a/tests/prev/BENCHFN.EXE.a1 +++ /dev/null @@ -1,109 +0,0 @@ - main PROC NEAR -000 000365 55 PUSH bp -001 000366 8BEC MOV bp, sp -002 000368 83EC08 SUB sp, 8 -003 00036B B89401 MOV ax, 194h -004 00036E 50 PUSH ax -005 00036F E8D90B CALL near ptr printf -006 000372 59 POP cx -007 000373 8D46FC LEA ax, [bp-4] -008 000376 50 PUSH ax -009 000377 B8B001 MOV ax, 1B0h -010 00037A 50 PUSH ax -011 00037B E85614 CALL near ptr scanf -012 00037E 59 POP cx -013 00037F 59 POP cx -014 000380 FF76FE PUSH word ptr [bp-2] -015 000383 FF76FC PUSH word ptr [bp-4] -016 000386 B8B401 MOV ax, 1B4h -017 000389 50 PUSH ax -018 00038A E8BE0B CALL near ptr printf -019 00038D 83C406 ADD sp, 6 -020 000390 C746FA0000 MOV word ptr [bp-6], 0 -021 000395 C746F80100 MOV word ptr [bp-8], 1 -022 00039A EB0B JMP L1 - -023 0003A7 8B56FA L1: MOV dx, [bp-6] -024 0003AA 8B46F8 MOV ax, [bp-8] -025 0003AD 3B56FE CMP dx, [bp-2] -026 0003B0 7CEA JL L2 -027 0003B2 7F05 JG L3 -028 0003B4 3B46FC CMP ax, [bp-4] -029 0003B7 76E3 JBE L2 - -030 0003B9 B8CE01 L3: MOV ax, 1CEh -031 0003BC 50 PUSH ax -032 0003BD E88B0B CALL near ptr printf -033 0003C0 59 POP cx -034 0003C1 8BE5 MOV sp, bp -035 0003C3 5D POP bp -036 0003C4 C3 RET - -037 00039C E8A6FF L2: CALL near ptr proc_1 -038 00039F 8346F801 ADD word ptr [bp-8], 1 -039 0003A3 8356FA00 ADC word ptr [bp-6], 0 -040 JMP L1 ;Synthetic inst - - main ENDP - - proc_1 PROC NEAR -000 000345 55 PUSH bp -001 000346 8BEC MOV bp, sp -002 000348 E8D7FF CALL near ptr proc_2 -003 00034B E8D4FF CALL near ptr proc_2 -004 00034E E8D1FF CALL near ptr proc_2 -005 000351 E8CEFF CALL near ptr proc_2 -006 000354 E8CBFF CALL near ptr proc_2 -007 000357 E8C8FF CALL near ptr proc_2 -008 00035A E8C5FF CALL near ptr proc_2 -009 00035D E8C2FF CALL near ptr proc_2 -010 000360 E8BFFF CALL near ptr proc_2 -011 000363 5D POP bp -012 000364 C3 RET - - proc_1 ENDP - - proc_2 PROC NEAR -000 000322 55 PUSH bp -001 000323 8BEC MOV bp, sp -002 000325 E8D7FF CALL near ptr proc_3 -003 000328 E8D4FF CALL near ptr proc_3 -004 00032B E8D1FF CALL near ptr proc_3 -005 00032E E8CEFF CALL near ptr proc_3 -006 000331 E8CBFF CALL near ptr proc_3 -007 000334 E8C8FF CALL near ptr proc_3 -008 000337 E8C5FF CALL near ptr proc_3 -009 00033A E8C2FF CALL near ptr proc_3 -010 00033D E8BFFF CALL near ptr proc_3 -011 000340 E8BCFF CALL near ptr proc_3 -012 000343 5D POP bp -013 000344 C3 RET - - proc_2 ENDP - - proc_3 PROC NEAR -000 0002FF 55 PUSH bp -001 000300 8BEC MOV bp, sp -002 000302 E8F5FF CALL near ptr proc_4 -003 000305 E8F2FF CALL near ptr proc_4 -004 000308 E8EFFF CALL near ptr proc_4 -005 00030B E8ECFF CALL near ptr proc_4 -006 00030E E8E9FF CALL near ptr proc_4 -007 000311 E8E6FF CALL near ptr proc_4 -008 000314 E8E3FF CALL near ptr proc_4 -009 000317 E8E0FF CALL near ptr proc_4 -010 00031A E8DDFF CALL near ptr proc_4 -011 00031D E8DAFF CALL near ptr proc_4 -012 000320 5D POP bp -013 000321 C3 RET - - proc_3 ENDP - - proc_4 PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 5D POP bp -003 0002FE C3 RET - - proc_4 ENDP - diff --git a/tests/prev/BENCHFN.EXE.a2 b/tests/prev/BENCHFN.EXE.a2 deleted file mode 100644 index 3215eca..0000000 --- a/tests/prev/BENCHFN.EXE.a2 +++ /dev/null @@ -1,108 +0,0 @@ - proc_4 PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 5D POP bp -003 0002FE C3 RET - - proc_4 ENDP - - proc_3 PROC NEAR -000 0002FF 55 PUSH bp -001 000300 8BEC MOV bp, sp -002 000302 E8F5FF CALL near ptr proc_4 -003 000305 E8F2FF CALL near ptr proc_4 -004 000308 E8EFFF CALL near ptr proc_4 -005 00030B E8ECFF CALL near ptr proc_4 -006 00030E E8E9FF CALL near ptr proc_4 -007 000311 E8E6FF CALL near ptr proc_4 -008 000314 E8E3FF CALL near ptr proc_4 -009 000317 E8E0FF CALL near ptr proc_4 -010 00031A E8DDFF CALL near ptr proc_4 -011 00031D E8DAFF CALL near ptr proc_4 -012 000320 5D POP bp -013 000321 C3 RET - - proc_3 ENDP - - proc_2 PROC NEAR -000 000322 55 PUSH bp -001 000323 8BEC MOV bp, sp -002 000325 E8D7FF CALL near ptr proc_3 -003 000328 E8D4FF CALL near ptr proc_3 -004 00032B E8D1FF CALL near ptr proc_3 -005 00032E E8CEFF CALL near ptr proc_3 -006 000331 E8CBFF CALL near ptr proc_3 -007 000334 E8C8FF CALL near ptr proc_3 -008 000337 E8C5FF CALL near ptr proc_3 -009 00033A E8C2FF CALL near ptr proc_3 -010 00033D E8BFFF CALL near ptr proc_3 -011 000340 E8BCFF CALL near ptr proc_3 -012 000343 5D POP bp -013 000344 C3 RET - - proc_2 ENDP - - proc_1 PROC NEAR -000 000345 55 PUSH bp -001 000346 8BEC MOV bp, sp -002 000348 E8D7FF CALL near ptr proc_2 -003 00034B E8D4FF CALL near ptr proc_2 -004 00034E E8D1FF CALL near ptr proc_2 -005 000351 E8CEFF CALL near ptr proc_2 -006 000354 E8CBFF CALL near ptr proc_2 -007 000357 E8C8FF CALL near ptr proc_2 -008 00035A E8C5FF CALL near ptr proc_2 -009 00035D E8C2FF CALL near ptr proc_2 -010 000360 E8BFFF CALL near ptr proc_2 -011 000363 5D POP bp -012 000364 C3 RET - - proc_1 ENDP - - main PROC NEAR -000 000365 55 PUSH bp -001 000366 8BEC MOV bp, sp -002 000368 83EC08 SUB sp, 8 -003 00036B B89401 MOV ax, 194h -004 00036E 50 PUSH ax -005 00036F E8D90B CALL near ptr printf -006 000372 59 POP cx -007 000373 8D46FC LEA ax, [bp-4] -008 000376 50 PUSH ax -009 000377 B8B001 MOV ax, 1B0h -010 00037A 50 PUSH ax -011 00037B E85614 CALL near ptr scanf -012 00037E 59 POP cx -013 00037F 59 POP cx -014 000380 FF76FE PUSH word ptr [bp-2] -015 000383 FF76FC PUSH word ptr [bp-4] -016 000386 B8B401 MOV ax, 1B4h -017 000389 50 PUSH ax -018 00038A E8BE0B CALL near ptr printf -019 00038D 83C406 ADD sp, 6 -020 000390 C746FA0000 MOV word ptr [bp-6], 0 -021 000395 C746F80100 MOV word ptr [bp-8], 1 - -023 0003A7 8B56FA L1: MOV dx, [bp-6] -024 0003AA 8B46F8 MOV ax, [bp-8] -025 0003AD 3B56FE CMP dx, [bp-2] -026 0003B0 7CEA JL L2 -027 0003B2 7F05 JG L3 -028 0003B4 3B46FC CMP ax, [bp-4] -029 0003B7 76E3 JBE L2 - -030 0003B9 B8CE01 L3: MOV ax, 1CEh -031 0003BC 50 PUSH ax -032 0003BD E88B0B CALL near ptr printf -033 0003C0 59 POP cx -034 0003C1 8BE5 MOV sp, bp -035 0003C3 5D POP bp -036 0003C4 C3 RET - -037 00039C E8A6FF L2: CALL near ptr proc_1 -038 00039F 8346F801 ADD word ptr [bp-8], 1 -039 0003A3 8356FA00 ADC word ptr [bp-6], 0 -040 JMP L1 ;Synthetic inst - - main ENDP - diff --git a/tests/prev/BENCHFN.b b/tests/prev/BENCHFN.b deleted file mode 100644 index 41ae251..0000000 --- a/tests/prev/BENCHFN.b +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Input file : ./tests/inputs/BENCHFN.EXE - * File type : EXE - */ - -#include "dcc.h" - - -void proc_4 () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -} - - -void proc_3 () -/* Takes no parameters. - * High-level language prologue code. - */ -{ - proc_4 (); - proc_4 (); - proc_4 (); - proc_4 (); - proc_4 (); - proc_4 (); - proc_4 (); - proc_4 (); - proc_4 (); - proc_4 (); -} - - -void proc_2 () -/* Takes no parameters. - * High-level language prologue code. - */ -{ - proc_3 (); - proc_3 (); - proc_3 (); - proc_3 (); - proc_3 (); - proc_3 (); - proc_3 (); - proc_3 (); - proc_3 (); - proc_3 (); -} - - -void proc_1 () -/* Takes no parameters. - * High-level language prologue code. - */ -{ - proc_2 (); - proc_2 (); - proc_2 (); - proc_2 (); - proc_2 (); - proc_2 (); - proc_2 (); - proc_2 (); - proc_2 (); -} - - -void main () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -long loc1; -long loc2; - - printf ("enter number of iterations "); - scanf ("%ld", &loc0); - printf ("executing %ld iterations\n", loc2); - loc1 = 1; - - while ((loc1 <= loc2)) { - proc_1 (); - loc1 = (loc1 + 1); - } /* end of while */ - printf ("finished\n"); -} - diff --git a/tests/prev/BENCHLNG.EXE.a1 b/tests/prev/BENCHLNG.EXE.a1 deleted file mode 100644 index 9340fc0..0000000 --- a/tests/prev/BENCHLNG.EXE.a1 +++ /dev/null @@ -1,242 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC14 SUB sp, 14h -003 000300 8D46FC LEA ax, [bp-4] -004 000303 50 PUSH ax -005 000304 B89401 MOV ax, 194h -006 000307 50 PUSH ax -007 000308 E85D15 CALL near ptr scanf -008 00030B 59 POP cx -009 00030C 59 POP cx -010 00030D FF76FE PUSH word ptr [bp-2] -011 000310 FF76FC PUSH word ptr [bp-4] -012 000313 B89801 MOV ax, 198h -013 000316 50 PUSH ax -014 000317 E8C50C CALL near ptr printf -015 00031A 83C406 ADD sp, 6 -016 00031D 8D46EC LEA ax, [bp-14h] -017 000320 50 PUSH ax -018 000321 B8B201 MOV ax, 1B2h -019 000324 50 PUSH ax -020 000325 E84015 CALL near ptr scanf -021 000328 59 POP cx -022 000329 59 POP cx -023 00032A 8D46F0 LEA ax, [bp-10h] -024 00032D 50 PUSH ax -025 00032E B8B601 MOV ax, 1B6h -026 000331 50 PUSH ax -027 000332 E83315 CALL near ptr scanf -028 000335 59 POP cx -029 000336 59 POP cx -030 000337 C746FA0000 MOV word ptr [bp-6], 0 -031 00033C C746F80100 MOV word ptr [bp-8], 1 -032 000341 E9E900 JMP L1 - -033 00042D 8B56FA L1: MOV dx, [bp-6] -034 000430 8B46F8 MOV ax, [bp-8] -035 000433 3B56FE CMP dx, [bp-2] -036 000436 7D03 JGE L2 -037 000438 E909FF JMP L3 - -038 000344 C746F60000 L3: MOV word ptr [bp-0Ah], 0 -039 000349 C746F40100 MOV word ptr [bp-0Ch], 1 -040 00034E E9C000 JMP L4 - -041 000411 837EF600 L4: CMP word ptr [bp-0Ah], 0 -042 000415 7D03 JGE L5 -043 000417 E937FF JMP L6 - -044 000351 8B56EE L6: MOV dx, [bp-12h] -045 000354 8B46EC MOV ax, [bp-14h] -046 000357 0346F0 ADD ax, [bp-10h] -047 00035A 1356F2 ADC dx, [bp-0Eh] -048 00035D 0346F4 ADD ax, [bp-0Ch] -049 000360 1356F6 ADC dx, [bp-0Ah] -050 000363 8956EE MOV [bp-12h], dx -051 000366 8946EC MOV [bp-14h], ax -052 000369 8B56EE MOV dx, [bp-12h] -053 00036C 8B46EC MOV ax, [bp-14h] -054 00036F D1FA SAR dx, 1 -055 000371 D1D8 RCR ax, 1 -056 000373 8956F2 MOV [bp-0Eh], dx -057 000376 8946F0 MOV [bp-10h], ax -058 000379 33D2 XOR dx, dx -059 00037B B80A00 MOV ax, 0Ah -060 00037E 52 PUSH dx -061 00037F 50 PUSH ax -062 000380 FF76F2 PUSH word ptr [bp-0Eh] -063 000383 FF76F0 PUSH word ptr [bp-10h] -064 000386 9AEB1D1000 CALL far ptr LMOD@ -065 00038B 8956EE MOV [bp-12h], dx -066 00038E 8946EC MOV [bp-14h], ax -067 000391 8B56F2 MOV dx, [bp-0Eh] -068 000394 8B46F0 MOV ax, [bp-10h] -069 000397 3B56F6 CMP dx, [bp-0Ah] -070 00039A 750A JNE L7 -071 00039C 3B46F4 CMP ax, [bp-0Ch] -072 00039F 7505 JNE L7 -073 0003A1 B80100 MOV ax, 1 -074 0003A4 EB02 JMP L8 - -075 0003A8 99 L8: CWD -076 0003A9 8956EE MOV [bp-12h], dx -077 0003AC 8946EC MOV [bp-14h], ax -078 0003AF 8B56EE MOV dx, [bp-12h] -079 0003B2 8B46EC MOV ax, [bp-14h] -080 0003B5 0B46F4 OR ax, [bp-0Ch] -081 0003B8 0B56F6 OR dx, [bp-0Ah] -082 0003BB 8956F2 MOV [bp-0Eh], dx -083 0003BE 8946F0 MOV [bp-10h], ax -084 0003C1 8B46F0 MOV ax, [bp-10h] -085 0003C4 0B46F2 OR ax, [bp-0Eh] -086 0003C7 7505 JNE L9 -087 0003C9 B80100 MOV ax, 1 -088 0003CC EB02 JMP L10 - -089 0003D0 99 L10: CWD -090 0003D1 8956EE MOV [bp-12h], dx -091 0003D4 8946EC MOV [bp-14h], ax -092 0003D7 8B56EE MOV dx, [bp-12h] -093 0003DA 8B46EC MOV ax, [bp-14h] -094 0003DD 0346F4 ADD ax, [bp-0Ch] -095 0003E0 1356F6 ADC dx, [bp-0Ah] -096 0003E3 8956F2 MOV [bp-0Eh], dx -097 0003E6 8946F0 MOV [bp-10h], ax -098 0003E9 8B56F2 MOV dx, [bp-0Eh] -099 0003EC 8B46F0 MOV ax, [bp-10h] -100 0003EF 3B56F6 CMP dx, [bp-0Ah] -101 0003F2 7C0C JL L11 -102 0003F4 7F05 JG L12 -103 0003F6 3B46F4 CMP ax, [bp-0Ch] -104 0003F9 7605 JBE L11 - -105 0003FB B80100 L12: MOV ax, 1 -106 0003FE EB02 JMP L13 - -107 000402 99 L13: CWD -108 000403 8956EE MOV [bp-12h], dx -109 000406 8946EC MOV [bp-14h], ax -110 000409 8346F401 ADD word ptr [bp-0Ch], 1 -111 00040D 8356F600 ADC word ptr [bp-0Ah], 0 -112 JMP L4 ;Synthetic inst - -113 000400 33C0 L11: XOR ax, ax -114 JMP L13 ;Synthetic inst - -115 0003CE 33C0 L9: XOR ax, ax -116 JMP L10 ;Synthetic inst - -117 0003A6 33C0 L7: XOR ax, ax -118 JMP L8 ;Synthetic inst - -119 00041A 7F09 L5: JG L14 -120 00041C 837EF428 CMP word ptr [bp-0Ch], 28h -121 000420 7703 JA L14 -122 000422 E92CFF JMP L6 - -123 000425 8346F801 L14: ADD word ptr [bp-8], 1 -124 000429 8356FA00 ADC word ptr [bp-6], 0 -125 JMP L1 ;Synthetic inst - -126 00043B 7F08 L2: JG L15 -127 00043D 3B46FC CMP ax, [bp-4] -128 000440 7703 JA L15 -129 000442 E9FFFE JMP L3 - -130 000445 FF76EE L15: PUSH word ptr [bp-12h] -131 000448 FF76EC PUSH word ptr [bp-14h] -132 00044B B8BA01 MOV ax, 1BAh -133 00044E 50 PUSH ax -134 00044F E88D0B CALL near ptr printf -135 000452 83C406 ADD sp, 6 -136 000455 8BE5 MOV sp, bp -137 000457 5D POP bp -138 000458 C3 RET - - main ENDP - - LMOD@ PROC FAR -000 001EEB B90200 MOV cx, 2 -001 001EEE EB03 JMP L16 - -002 001EF3 55 L16: PUSH bp -003 001EF4 56 PUSH si -004 001EF5 57 PUSH di -005 001EF6 8BEC MOV bp, sp -006 001EF8 8BF9 MOV di, cx -007 001EFA 8B460A MOV ax, [bp+0Ah] -008 001EFD 8B560C MOV dx, [bp+0Ch] -009 001F00 8B5E0E MOV bx, [bp+0Eh] -010 001F03 8B4E10 MOV cx, [bp+10h] -011 001F06 0BC9 OR cx, cx -012 001F08 7508 JNE L17 -013 001F0A 0BD2 OR dx, dx -014 001F0C 7469 JE L18 -015 001F0E 0BDB OR bx, bx -016 001F10 7465 JE L18 - -017 001F12 F7C70100 L17: TEST di, 1 -018 001F16 751C JNE L19 -019 001F18 0BD2 OR dx, dx -020 001F1A 790A JNS L20 -021 001F1C F7DA NEG dx -022 001F1E F7D8 NEG ax -023 001F20 83DA00 SBB dx, 0 -024 001F23 83CF0C OR di, 0Ch - -025 001F26 0BC9 L20: OR cx, cx -026 001F28 790A JNS L19 -027 001F2A F7D9 NEG cx -028 001F2C F7DB NEG bx -029 001F2E 83D900 SBB cx, 0 -030 001F31 83F704 XOR di, 4 - -031 001F34 8BE9 L19: MOV bp, cx -032 001F36 B92000 MOV cx, 20h -033 001F39 57 PUSH di -034 001F3A 33FF XOR di, di -035 001F3C 33F6 XOR si, si - -036 001F3E D1E0 L21: SHL ax, 1 -037 001F40 D1D2 RCL dx, 1 -038 001F42 D1D6 RCL si, 1 -039 001F44 D1D7 RCL di, 1 -040 001F46 3BFD CMP di, bp -041 001F48 720B JB L22 -042 001F4A 7704 JA L23 -043 001F4C 3BF3 CMP si, bx -044 001F4E 7205 JB L22 - -045 001F50 2BF3 L23: SUB si, bx -046 001F52 1BFD SBB di, bp -047 001F54 40 INC ax - -048 001F55 E2E7 L22: LOOP L21 -049 001F57 5B POP bx -050 001F58 F7C30200 TEST bx, 2 -051 001F5C 7406 JE L24 -052 001F5E 8BC6 MOV ax, si -053 001F60 8BD7 MOV dx, di -054 001F62 D1EB SHR bx, 1 - -055 001F64 F7C30400 L24: TEST bx, 4 -056 001F68 7407 JE L25 -057 001F6A F7DA NEG dx -058 001F6C F7D8 NEG ax -059 001F6E 83DA00 SBB dx, 0 - -060 001F71 5F L25: POP di -061 001F72 5E POP si -062 001F73 5D POP bp -063 001F74 CA0800 RETF 8 -065 001F77 F7F3 DIV bx -067 001F79 F7C70200 TEST di, 2 -068 001F7D 7402 JE L26 -069 001F7F 8BC2 MOV ax, dx - -070 001F81 33D2 L26: XOR dx, dx -071 001F83 EBEC JMP L25 - - LMOD@ ENDP - diff --git a/tests/prev/BENCHLNG.EXE.a2 b/tests/prev/BENCHLNG.EXE.a2 deleted file mode 100644 index 5ae414e..0000000 --- a/tests/prev/BENCHLNG.EXE.a2 +++ /dev/null @@ -1,234 +0,0 @@ - LMOD@ PROC FAR -000 001EEB B90200 MOV cx, 2 -002 001EF3 55 PUSH bp -003 001EF4 56 PUSH si -004 001EF5 57 PUSH di -005 001EF6 8BEC MOV bp, sp -006 001EF8 8BF9 MOV di, cx -007 001EFA 8B460A MOV ax, [bp+0Ah] -008 001EFD 8B560C MOV dx, [bp+0Ch] -009 001F00 8B5E0E MOV bx, [bp+0Eh] -010 001F03 8B4E10 MOV cx, [bp+10h] -011 001F06 0BC9 OR cx, cx -012 001F08 7508 JNE L1 -013 001F0A 0BD2 OR dx, dx -014 001F0C 7469 JE L2 -015 001F0E 0BDB OR bx, bx -016 001F10 7465 JE L2 - -017 001F12 F7C70100 L1: TEST di, 1 -018 001F16 751C JNE L3 -019 001F18 0BD2 OR dx, dx -020 001F1A 790A JNS L4 -021 001F1C F7DA NEG dx -022 001F1E F7D8 NEG ax -023 001F20 83DA00 SBB dx, 0 -024 001F23 83CF0C OR di, 0Ch - -025 001F26 0BC9 L4: OR cx, cx -026 001F28 790A JNS L3 -027 001F2A F7D9 NEG cx -028 001F2C F7DB NEG bx -029 001F2E 83D900 SBB cx, 0 -030 001F31 83F704 XOR di, 4 - -031 001F34 8BE9 L3: MOV bp, cx -032 001F36 B92000 MOV cx, 20h -033 001F39 57 PUSH di -034 001F3A 33FF XOR di, di -035 001F3C 33F6 XOR si, si - -036 001F3E D1E0 L5: SHL ax, 1 -037 001F40 D1D2 RCL dx, 1 -038 001F42 D1D6 RCL si, 1 -039 001F44 D1D7 RCL di, 1 -040 001F46 3BFD CMP di, bp -041 001F48 720B JB L6 -042 001F4A 7704 JA L7 -043 001F4C 3BF3 CMP si, bx -044 001F4E 7205 JB L6 - -045 001F50 2BF3 L7: SUB si, bx -046 001F52 1BFD SBB di, bp -047 001F54 40 INC ax - -048 001F55 E2E7 L6: LOOP L5 -049 001F57 5B POP bx -050 001F58 F7C30200 TEST bx, 2 -051 001F5C 7406 JE L8 -052 001F5E 8BC6 MOV ax, si -053 001F60 8BD7 MOV dx, di -054 001F62 D1EB SHR bx, 1 - -055 001F64 F7C30400 L8: TEST bx, 4 -056 001F68 7407 JE L9 -057 001F6A F7DA NEG dx -058 001F6C F7D8 NEG ax -059 001F6E 83DA00 SBB dx, 0 - -060 001F71 5F L9: POP di -061 001F72 5E POP si -062 001F73 5D POP bp -063 001F74 CA0800 RETF 8 - -064 L2: MOV tmp, dx:ax ;Synthetic inst -065 001F77 F7F3 DIV bx -066 MOD bx ;Synthetic inst -067 001F79 F7C70200 TEST di, 2 -068 001F7D 7402 JE L10 -069 001F7F 8BC2 MOV ax, dx - -070 001F81 33D2 L10: XOR dx, dx -071 001F83 EBEC JMP L9 - - LMOD@ ENDP - - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC14 SUB sp, 14h -003 000300 8D46FC LEA ax, [bp-4] -004 000303 50 PUSH ax -005 000304 B89401 MOV ax, 194h -006 000307 50 PUSH ax -007 000308 E85D15 CALL near ptr scanf -008 00030B 59 POP cx -009 00030C 59 POP cx -010 00030D FF76FE PUSH word ptr [bp-2] -011 000310 FF76FC PUSH word ptr [bp-4] -012 000313 B89801 MOV ax, 198h -013 000316 50 PUSH ax -014 000317 E8C50C CALL near ptr printf -015 00031A 83C406 ADD sp, 6 -016 00031D 8D46EC LEA ax, [bp-14h] -017 000320 50 PUSH ax -018 000321 B8B201 MOV ax, 1B2h -019 000324 50 PUSH ax -020 000325 E84015 CALL near ptr scanf -021 000328 59 POP cx -022 000329 59 POP cx -023 00032A 8D46F0 LEA ax, [bp-10h] -024 00032D 50 PUSH ax -025 00032E B8B601 MOV ax, 1B6h -026 000331 50 PUSH ax -027 000332 E83315 CALL near ptr scanf -028 000335 59 POP cx -029 000336 59 POP cx -030 000337 C746FA0000 MOV word ptr [bp-6], 0 -031 00033C C746F80100 MOV word ptr [bp-8], 1 - -033 00042D 8B56FA L11: MOV dx, [bp-6] -034 000430 8B46F8 MOV ax, [bp-8] -035 000433 3B56FE CMP dx, [bp-2] -036 000436 7D03 JGE L12 - -038 000344 C746F60000 L13: MOV word ptr [bp-0Ah], 0 -039 000349 C746F40100 MOV word ptr [bp-0Ch], 1 - -041 000411 837EF600 L14: CMP word ptr [bp-0Ah], 0 -042 000415 7D03 JGE L15 - -044 000351 8B56EE L16: MOV dx, [bp-12h] -045 000354 8B46EC MOV ax, [bp-14h] -046 000357 0346F0 ADD ax, [bp-10h] -047 00035A 1356F2 ADC dx, [bp-0Eh] -048 00035D 0346F4 ADD ax, [bp-0Ch] -049 000360 1356F6 ADC dx, [bp-0Ah] -050 000363 8956EE MOV [bp-12h], dx -051 000366 8946EC MOV [bp-14h], ax -052 000369 8B56EE MOV dx, [bp-12h] -053 00036C 8B46EC MOV ax, [bp-14h] -054 00036F D1FA SAR dx, 1 -055 000371 D1D8 RCR ax, 1 -056 000373 8956F2 MOV [bp-0Eh], dx -057 000376 8946F0 MOV [bp-10h], ax -058 000379 33D2 XOR dx, dx -059 00037B B80A00 MOV ax, 0Ah -060 00037E 52 PUSH dx -061 00037F 50 PUSH ax -062 000380 FF76F2 PUSH word ptr [bp-0Eh] -063 000383 FF76F0 PUSH word ptr [bp-10h] -064 000386 9AEB1D1000 CALL far ptr LMOD@ -065 00038B 8956EE MOV [bp-12h], dx -066 00038E 8946EC MOV [bp-14h], ax -067 000391 8B56F2 MOV dx, [bp-0Eh] -068 000394 8B46F0 MOV ax, [bp-10h] -069 000397 3B56F6 CMP dx, [bp-0Ah] -070 00039A 750A JNE L17 -071 00039C 3B46F4 CMP ax, [bp-0Ch] -072 00039F 7505 JNE L17 -073 0003A1 B80100 MOV ax, 1 - -075 0003A8 99 L18: CWD -076 0003A9 8956EE MOV [bp-12h], dx -077 0003AC 8946EC MOV [bp-14h], ax -078 0003AF 8B56EE MOV dx, [bp-12h] -079 0003B2 8B46EC MOV ax, [bp-14h] -080 0003B5 0B46F4 OR ax, [bp-0Ch] -081 0003B8 0B56F6 OR dx, [bp-0Ah] -082 0003BB 8956F2 MOV [bp-0Eh], dx -083 0003BE 8946F0 MOV [bp-10h], ax -084 0003C1 8B46F0 MOV ax, [bp-10h] -085 0003C4 0B46F2 OR ax, [bp-0Eh] -086 0003C7 7505 JNE L19 -087 0003C9 B80100 MOV ax, 1 - -089 0003D0 99 L20: CWD -090 0003D1 8956EE MOV [bp-12h], dx -091 0003D4 8946EC MOV [bp-14h], ax -092 0003D7 8B56EE MOV dx, [bp-12h] -093 0003DA 8B46EC MOV ax, [bp-14h] -094 0003DD 0346F4 ADD ax, [bp-0Ch] -095 0003E0 1356F6 ADC dx, [bp-0Ah] -096 0003E3 8956F2 MOV [bp-0Eh], dx -097 0003E6 8946F0 MOV [bp-10h], ax -098 0003E9 8B56F2 MOV dx, [bp-0Eh] -099 0003EC 8B46F0 MOV ax, [bp-10h] -100 0003EF 3B56F6 CMP dx, [bp-0Ah] -101 0003F2 7C0C JL L21 -102 0003F4 7F05 JG L22 -103 0003F6 3B46F4 CMP ax, [bp-0Ch] -104 0003F9 7605 JBE L21 - -105 0003FB B80100 L22: MOV ax, 1 - -107 000402 99 L23: CWD -108 000403 8956EE MOV [bp-12h], dx -109 000406 8946EC MOV [bp-14h], ax -110 000409 8346F401 ADD word ptr [bp-0Ch], 1 -111 00040D 8356F600 ADC word ptr [bp-0Ah], 0 -112 JMP L14 ;Synthetic inst - -113 000400 33C0 L21: XOR ax, ax -114 JMP L23 ;Synthetic inst - -115 0003CE 33C0 L19: XOR ax, ax -116 JMP L20 ;Synthetic inst - -117 0003A6 33C0 L17: XOR ax, ax -118 JMP L18 ;Synthetic inst - -119 00041A 7F09 L15: JG L24 -120 00041C 837EF428 CMP word ptr [bp-0Ch], 28h -121 000420 7703 JA L24 - -123 000425 8346F801 L24: ADD word ptr [bp-8], 1 -124 000429 8356FA00 ADC word ptr [bp-6], 0 -125 JMP L11 ;Synthetic inst - -126 00043B 7F08 L12: JG L25 -127 00043D 3B46FC CMP ax, [bp-4] -128 000440 7703 JA L25 - -130 000445 FF76EE L25: PUSH word ptr [bp-12h] -131 000448 FF76EC PUSH word ptr [bp-14h] -132 00044B B8BA01 MOV ax, 1BAh -133 00044E 50 PUSH ax -134 00044F E88D0B CALL near ptr printf -135 000452 83C406 ADD sp, 6 -136 000455 8BE5 MOV sp, bp -137 000457 5D POP bp -138 000458 C3 RET - - main ENDP - diff --git a/tests/prev/BENCHLNG.b b/tests/prev/BENCHLNG.b deleted file mode 100644 index da66c79..0000000 --- a/tests/prev/BENCHLNG.b +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Input file : ./tests/inputs/BENCHLNG.EXE - * File type : EXE - */ - -#include "dcc.h" - - -long LMOD@ (long arg0, int arg2, int arg3) -/* Takes 8 bytes of parameters. - * Runtime support routine of the compiler. - * Untranslatable routine. Assembler provided. - * Return value in registers dx:ax. - * Pascal calling convention. - */ -{ - MOV cx, 2 - PUSH bp - PUSH si - PUSH di - MOV bp, sp - MOV di, cx - MOV ax, [bp+0Ah] - MOV dx, [bp+0Ch] - MOV bx, [bp+0Eh] - MOV cx, [bp+10h] - CMP cx, 0 - JNE L1 - OR dx, dx - JE L2 - OR bx, bx - JE L2 - - L1: TEST di, 1 - JNE L3 - OR dx, dx - JNS L4 - NEG dx - NEG ax - SBB dx, 0 - OR di, 0Ch - - L4: OR cx, cx - JNS L3 - NEG cx - NEG bx - SBB cx, 0 - XOR di, 4 - - L3: MOV bp, cx - MOV cx, 20h - PUSH di - XOR di, 0 - XOR si, 0 - - L5: SHL ax, 1 - RCL dx, 1 - RCL si, 1 - RCL di, 1 - CMP di, bp - JB L6 - JA L7 - CMP si, bx - JB L6 - - L7: SUB si, bx - SBB di, bp - INC ax - - L6: LOOP L5 - POP bx - TEST bx, 2 - JE L8 - MOV ax, si - MOV dx, di - SHR bx, 1 - - L8: TEST bx, 4 - JE L9 - NEG dx - NEG ax - SBB dx, 0 - - L9: POP di - POP si - POP bp - RETF 8 - - L2: MOV tmp, dx:ax ;Synthetic inst - DIV bx - MOD bx ;Synthetic inst - TEST di, 2 - JE L10 - MOV ax, dx - - L10: XOR dx, dx - JMP L9 -} - - -void main () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -long loc1; -long loc2; -long loc3; -long loc4; -long loc5; -int loc6; /* ax */ - - scanf ("%ld", &loc0); - printf ("executing %ld iterations\n", loc5); - scanf ("%ld", &loc2); - scanf ("%ld", &loc3); - loc3 = 1; - - while ((loc3 <= loc5)) { - loc2 = 1; - - while ((loc2 <= 40)) { - loc4 = ((loc4 + loc1) + loc2); - loc1 = (loc4 >> 1); - loc4 = LMOD@ (loc1, 10); - - if (loc1 == loc2) { - loc6 = 1; - } - else { - loc6 = 0; - } - loc4 = loc6; - loc1 = (loc4 | loc2); - - if ((loc3 | loc9) == 0) { - loc6 = 1; - } - else { - loc6 = 0; - } - loc4 = loc6; - loc1 = (loc4 + loc2); - - if (loc1 > loc2) { - loc6 = 1; - } - else { - loc6 = 0; - } - loc4 = loc6; - loc2 = (loc2 + 1); - } /* end of while */ - loc3 = (loc3 + 1); - } /* end of while */ - printf ("a=%d\n", loc4); -} - diff --git a/tests/prev/BENCHMUL.EXE.a1 b/tests/prev/BENCHMUL.EXE.a1 deleted file mode 100644 index ca69338..0000000 --- a/tests/prev/BENCHMUL.EXE.a1 +++ /dev/null @@ -1,101 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC0C SUB sp, 0Ch -003 000300 56 PUSH si -004 000301 B89401 MOV ax, 194h -005 000304 50 PUSH ax -006 000305 E8530C CALL near ptr printf -007 000308 59 POP cx -008 000309 8D46FC LEA ax, [bp-4] -009 00030C 50 PUSH ax -010 00030D B8B001 MOV ax, 1B0h -011 000310 50 PUSH ax -012 000311 E8D014 CALL near ptr scanf -013 000314 59 POP cx -014 000315 59 POP cx -015 000316 FF76FE PUSH word ptr [bp-2] -016 000319 FF76FC PUSH word ptr [bp-4] -017 00031C B8B401 MOV ax, 1B4h -018 00031F 50 PUSH ax -019 000320 E8380C CALL near ptr printf -020 000323 83C406 ADD sp, 6 -021 000326 8D46F4 LEA ax, [bp-0Ch] -022 000329 50 PUSH ax -023 00032A B8CE01 MOV ax, 1CEh -024 00032D 50 PUSH ax -025 00032E E8B314 CALL near ptr scanf -026 000331 59 POP cx -027 000332 59 POP cx -028 000333 8D46F6 LEA ax, [bp-0Ah] -029 000336 50 PUSH ax -030 000337 B8D101 MOV ax, 1D1h -031 00033A 50 PUSH ax -032 00033B E8A614 CALL near ptr scanf -033 00033E 59 POP cx -034 00033F 59 POP cx -035 000340 C746FA0000 MOV word ptr [bp-6], 0 -036 000345 C746F80100 MOV word ptr [bp-8], 1 -037 00034A EB66 JMP L1 - -038 0003B2 8B56FA L1: MOV dx, [bp-6] -039 0003B5 8B46F8 MOV ax, [bp-8] -040 0003B8 3B56FE CMP dx, [bp-2] -041 0003BB 7C8F JL L2 -042 0003BD 7F05 JG L3 -043 0003BF 3B46FC CMP ax, [bp-4] -044 0003C2 7688 JBE L2 - -045 0003C4 FF76F4 L3: PUSH word ptr [bp-0Ch] -046 0003C7 B8D401 MOV ax, 1D4h -047 0003CA 50 PUSH ax -048 0003CB E88D0B CALL near ptr printf -049 0003CE 59 POP cx -050 0003CF 59 POP cx -051 0003D0 5E POP si -052 0003D1 8BE5 MOV sp, bp -053 0003D3 5D POP bp -054 0003D4 C3 RET - -055 00034C BE0100 L2: MOV si, 1 -056 00034F EB54 JMP L4 - -057 0003A5 83FE28 L4: CMP si, 28h -058 0003A8 7EA7 JLE L5 -059 0003AA 8346F801 ADD word ptr [bp-8], 1 -060 0003AE 8356FA00 ADC word ptr [bp-6], 0 -061 JMP L1 ;Synthetic inst - -062 000351 8B46F4 L5: MOV ax, [bp-0Ch] -063 000354 F766F4 MUL word ptr [bp-0Ch] -064 000357 F766F4 MUL word ptr [bp-0Ch] -065 00035A F766F4 MUL word ptr [bp-0Ch] -066 00035D F766F4 MUL word ptr [bp-0Ch] -067 000360 F766F4 MUL word ptr [bp-0Ch] -068 000363 F766F4 MUL word ptr [bp-0Ch] -069 000366 F766F4 MUL word ptr [bp-0Ch] -070 000369 F766F4 MUL word ptr [bp-0Ch] -071 00036C F766F4 MUL word ptr [bp-0Ch] -072 00036F F766F4 MUL word ptr [bp-0Ch] -073 000372 F766F4 MUL word ptr [bp-0Ch] -074 000375 F766F4 MUL word ptr [bp-0Ch] -075 000378 F766F4 MUL word ptr [bp-0Ch] -076 00037B F766F4 MUL word ptr [bp-0Ch] -077 00037E F766F4 MUL word ptr [bp-0Ch] -078 000381 F766F4 MUL word ptr [bp-0Ch] -079 000384 F766F4 MUL word ptr [bp-0Ch] -080 000387 F766F4 MUL word ptr [bp-0Ch] -081 00038A F766F4 MUL word ptr [bp-0Ch] -082 00038D F766F4 MUL word ptr [bp-0Ch] -083 000390 F766F4 MUL word ptr [bp-0Ch] -084 000393 F766F4 MUL word ptr [bp-0Ch] -085 000396 F766F4 MUL word ptr [bp-0Ch] -086 000399 F766F4 MUL word ptr [bp-0Ch] -087 00039C BA0300 MOV dx, 3 -088 00039F F7E2 MUL dx -089 0003A1 8946F4 MOV [bp-0Ch], ax -090 0003A4 46 INC si -091 JMP L4 ;Synthetic inst - - main ENDP - diff --git a/tests/prev/BENCHMUL.EXE.a2 b/tests/prev/BENCHMUL.EXE.a2 deleted file mode 100644 index 2419022..0000000 --- a/tests/prev/BENCHMUL.EXE.a2 +++ /dev/null @@ -1,99 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC0C SUB sp, 0Ch -003 000300 56 PUSH si -004 000301 B89401 MOV ax, 194h -005 000304 50 PUSH ax -006 000305 E8530C CALL near ptr printf -007 000308 59 POP cx -008 000309 8D46FC LEA ax, [bp-4] -009 00030C 50 PUSH ax -010 00030D B8B001 MOV ax, 1B0h -011 000310 50 PUSH ax -012 000311 E8D014 CALL near ptr scanf -013 000314 59 POP cx -014 000315 59 POP cx -015 000316 FF76FE PUSH word ptr [bp-2] -016 000319 FF76FC PUSH word ptr [bp-4] -017 00031C B8B401 MOV ax, 1B4h -018 00031F 50 PUSH ax -019 000320 E8380C CALL near ptr printf -020 000323 83C406 ADD sp, 6 -021 000326 8D46F4 LEA ax, [bp-0Ch] -022 000329 50 PUSH ax -023 00032A B8CE01 MOV ax, 1CEh -024 00032D 50 PUSH ax -025 00032E E8B314 CALL near ptr scanf -026 000331 59 POP cx -027 000332 59 POP cx -028 000333 8D46F6 LEA ax, [bp-0Ah] -029 000336 50 PUSH ax -030 000337 B8D101 MOV ax, 1D1h -031 00033A 50 PUSH ax -032 00033B E8A614 CALL near ptr scanf -033 00033E 59 POP cx -034 00033F 59 POP cx -035 000340 C746FA0000 MOV word ptr [bp-6], 0 -036 000345 C746F80100 MOV word ptr [bp-8], 1 - -038 0003B2 8B56FA L1: MOV dx, [bp-6] -039 0003B5 8B46F8 MOV ax, [bp-8] -040 0003B8 3B56FE CMP dx, [bp-2] -041 0003BB 7C8F JL L2 -042 0003BD 7F05 JG L3 -043 0003BF 3B46FC CMP ax, [bp-4] -044 0003C2 7688 JBE L2 - -045 0003C4 FF76F4 L3: PUSH word ptr [bp-0Ch] -046 0003C7 B8D401 MOV ax, 1D4h -047 0003CA 50 PUSH ax -048 0003CB E88D0B CALL near ptr printf -049 0003CE 59 POP cx -050 0003CF 59 POP cx -051 0003D0 5E POP si -052 0003D1 8BE5 MOV sp, bp -053 0003D3 5D POP bp -054 0003D4 C3 RET - -055 00034C BE0100 L2: MOV si, 1 - -057 0003A5 83FE28 L4: CMP si, 28h -058 0003A8 7EA7 JLE L5 -059 0003AA 8346F801 ADD word ptr [bp-8], 1 -060 0003AE 8356FA00 ADC word ptr [bp-6], 0 -061 JMP L1 ;Synthetic inst - -062 000351 8B46F4 L5: MOV ax, [bp-0Ch] -063 000354 F766F4 MUL word ptr [bp-0Ch] -064 000357 F766F4 MUL word ptr [bp-0Ch] -065 00035A F766F4 MUL word ptr [bp-0Ch] -066 00035D F766F4 MUL word ptr [bp-0Ch] -067 000360 F766F4 MUL word ptr [bp-0Ch] -068 000363 F766F4 MUL word ptr [bp-0Ch] -069 000366 F766F4 MUL word ptr [bp-0Ch] -070 000369 F766F4 MUL word ptr [bp-0Ch] -071 00036C F766F4 MUL word ptr [bp-0Ch] -072 00036F F766F4 MUL word ptr [bp-0Ch] -073 000372 F766F4 MUL word ptr [bp-0Ch] -074 000375 F766F4 MUL word ptr [bp-0Ch] -075 000378 F766F4 MUL word ptr [bp-0Ch] -076 00037B F766F4 MUL word ptr [bp-0Ch] -077 00037E F766F4 MUL word ptr [bp-0Ch] -078 000381 F766F4 MUL word ptr [bp-0Ch] -079 000384 F766F4 MUL word ptr [bp-0Ch] -080 000387 F766F4 MUL word ptr [bp-0Ch] -081 00038A F766F4 MUL word ptr [bp-0Ch] -082 00038D F766F4 MUL word ptr [bp-0Ch] -083 000390 F766F4 MUL word ptr [bp-0Ch] -084 000393 F766F4 MUL word ptr [bp-0Ch] -085 000396 F766F4 MUL word ptr [bp-0Ch] -086 000399 F766F4 MUL word ptr [bp-0Ch] -087 00039C BA0300 MOV dx, 3 -088 00039F F7E2 MUL dx -089 0003A1 8946F4 MOV [bp-0Ch], ax -090 0003A4 46 INC si -091 JMP L4 ;Synthetic inst - - main ENDP - diff --git a/tests/prev/BENCHMUL.b b/tests/prev/BENCHMUL.b deleted file mode 100644 index e2f9357..0000000 --- a/tests/prev/BENCHMUL.b +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Input file : ./tests/inputs/BENCHMUL.EXE - * File type : EXE - */ - -#include "dcc.h" - - -void main () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -int loc1; -int loc2; -long loc3; -long loc4; -int loc5; - - printf ("enter number of iterations\n"); - scanf ("%ld", &loc0); - printf ("executing %ld iterations\n", loc4); - scanf ("%d", &loc1); - scanf ("%d", &loc2); - loc3 = 1; - - while ((loc3 <= loc4)) { - loc5 = 1; - - while ((loc5 <= 40)) { - loc1 = (((((((((((((((((((((((((loc1 * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * loc1) * 3); - loc5 = (loc5 + 1); - } /* end of while */ - loc3 = (loc3 + 1); - } /* end of while */ - printf ("a=%d\n", loc1); -} - diff --git a/tests/prev/BENCHMUS.EXE.a1 b/tests/prev/BENCHMUS.EXE.a1 deleted file mode 100644 index 60b043f..0000000 --- a/tests/prev/BENCHMUS.EXE.a1 +++ /dev/null @@ -1,91 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC0A SUB sp, 0Ah -003 000300 56 PUSH si -004 000301 57 PUSH di -005 000302 B8A801 MOV ax, 1A8h -006 000305 50 PUSH ax -007 000306 E8240C CALL near ptr printf -008 000309 59 POP cx -009 00030A 8D46FC LEA ax, [bp-4] -010 00030D 50 PUSH ax -011 00030E B8C401 MOV ax, 1C4h -012 000311 50 PUSH ax -013 000312 E8A114 CALL near ptr scanf -014 000315 59 POP cx -015 000316 59 POP cx -016 000317 FF76FE PUSH word ptr [bp-2] -017 00031A FF76FC PUSH word ptr [bp-4] -018 00031D B8C801 MOV ax, 1C8h -019 000320 50 PUSH ax -020 000321 E8090C CALL near ptr printf -021 000324 83C406 ADD sp, 6 -022 000327 BE1400 MOV si, 14h -023 00032A 8976F6 MOV [bp-0Ah], si -024 00032D C746FA0000 MOV word ptr [bp-6], 0 -025 000332 C746F80100 MOV word ptr [bp-8], 1 -026 000337 EB4C JMP L1 - -027 000385 8B56FA L1: MOV dx, [bp-6] -028 000388 8B46F8 MOV ax, [bp-8] -029 00038B 3B56FE CMP dx, [bp-2] -030 00038E 7CA9 JL L2 -031 000390 7F05 JG L3 -032 000392 3B46FC CMP ax, [bp-4] -033 000395 76A2 JBE L2 - -034 000397 56 L3: PUSH si -035 000398 B8E201 MOV ax, 1E2h -036 00039B 50 PUSH ax -037 00039C E88E0B CALL near ptr printf -038 00039F 59 POP cx -039 0003A0 59 POP cx -040 0003A1 5F POP di -041 0003A2 5E POP si -042 0003A3 8BE5 MOV sp, bp -043 0003A5 5D POP bp -044 0003A6 C3 RET - -045 000339 BF0100 L2: MOV di, 1 -046 00033C EB3A JMP L4 - -047 000378 83FF28 L4: CMP di, 28h -048 00037B 7EC1 JLE L5 -049 00037D 8346F801 ADD word ptr [bp-8], 1 -050 000381 8356FA00 ADC word ptr [bp-6], 0 -051 JMP L1 ;Synthetic inst - -052 00033E 8BC6 L5: MOV ax, si -053 000340 F7E6 MUL si -054 000342 F7E6 MUL si -055 000344 F7E6 MUL si -056 000346 F7E6 MUL si -057 000348 F7E6 MUL si -058 00034A F7E6 MUL si -059 00034C F7E6 MUL si -060 00034E F7E6 MUL si -061 000350 F7E6 MUL si -062 000352 F7E6 MUL si -063 000354 F7E6 MUL si -064 000356 F7E6 MUL si -065 000358 F7E6 MUL si -066 00035A F7E6 MUL si -067 00035C F7E6 MUL si -068 00035E F7E6 MUL si -069 000360 F7E6 MUL si -070 000362 F7E6 MUL si -071 000364 F7E6 MUL si -072 000366 F7E6 MUL si -073 000368 F7E6 MUL si -074 00036A F7E6 MUL si -075 00036C F7E6 MUL si -076 00036E F7E6 MUL si -077 000370 BA0300 MOV dx, 3 -078 000373 F7E2 MUL dx -079 000375 8BF0 MOV si, ax -080 000377 47 INC di -081 JMP L4 ;Synthetic inst - - main ENDP - diff --git a/tests/prev/BENCHMUS.EXE.a2 b/tests/prev/BENCHMUS.EXE.a2 deleted file mode 100644 index 2495a57..0000000 --- a/tests/prev/BENCHMUS.EXE.a2 +++ /dev/null @@ -1,89 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC0A SUB sp, 0Ah -003 000300 56 PUSH si -004 000301 57 PUSH di -005 000302 B8A801 MOV ax, 1A8h -006 000305 50 PUSH ax -007 000306 E8240C CALL near ptr printf -008 000309 59 POP cx -009 00030A 8D46FC LEA ax, [bp-4] -010 00030D 50 PUSH ax -011 00030E B8C401 MOV ax, 1C4h -012 000311 50 PUSH ax -013 000312 E8A114 CALL near ptr scanf -014 000315 59 POP cx -015 000316 59 POP cx -016 000317 FF76FE PUSH word ptr [bp-2] -017 00031A FF76FC PUSH word ptr [bp-4] -018 00031D B8C801 MOV ax, 1C8h -019 000320 50 PUSH ax -020 000321 E8090C CALL near ptr printf -021 000324 83C406 ADD sp, 6 -022 000327 BE1400 MOV si, 14h -023 00032A 8976F6 MOV [bp-0Ah], si -024 00032D C746FA0000 MOV word ptr [bp-6], 0 -025 000332 C746F80100 MOV word ptr [bp-8], 1 - -027 000385 8B56FA L1: MOV dx, [bp-6] -028 000388 8B46F8 MOV ax, [bp-8] -029 00038B 3B56FE CMP dx, [bp-2] -030 00038E 7CA9 JL L2 -031 000390 7F05 JG L3 -032 000392 3B46FC CMP ax, [bp-4] -033 000395 76A2 JBE L2 - -034 000397 56 L3: PUSH si -035 000398 B8E201 MOV ax, 1E2h -036 00039B 50 PUSH ax -037 00039C E88E0B CALL near ptr printf -038 00039F 59 POP cx -039 0003A0 59 POP cx -040 0003A1 5F POP di -041 0003A2 5E POP si -042 0003A3 8BE5 MOV sp, bp -043 0003A5 5D POP bp -044 0003A6 C3 RET - -045 000339 BF0100 L2: MOV di, 1 - -047 000378 83FF28 L4: CMP di, 28h -048 00037B 7EC1 JLE L5 -049 00037D 8346F801 ADD word ptr [bp-8], 1 -050 000381 8356FA00 ADC word ptr [bp-6], 0 -051 JMP L1 ;Synthetic inst - -052 00033E 8BC6 L5: MOV ax, si -053 000340 F7E6 MUL si -054 000342 F7E6 MUL si -055 000344 F7E6 MUL si -056 000346 F7E6 MUL si -057 000348 F7E6 MUL si -058 00034A F7E6 MUL si -059 00034C F7E6 MUL si -060 00034E F7E6 MUL si -061 000350 F7E6 MUL si -062 000352 F7E6 MUL si -063 000354 F7E6 MUL si -064 000356 F7E6 MUL si -065 000358 F7E6 MUL si -066 00035A F7E6 MUL si -067 00035C F7E6 MUL si -068 00035E F7E6 MUL si -069 000360 F7E6 MUL si -070 000362 F7E6 MUL si -071 000364 F7E6 MUL si -072 000366 F7E6 MUL si -073 000368 F7E6 MUL si -074 00036A F7E6 MUL si -075 00036C F7E6 MUL si -076 00036E F7E6 MUL si -077 000370 BA0300 MOV dx, 3 -078 000373 F7E2 MUL dx -079 000375 8BF0 MOV si, ax -080 000377 47 INC di -081 JMP L4 ;Synthetic inst - - main ENDP - diff --git a/tests/prev/BENCHMUS.b b/tests/prev/BENCHMUS.b deleted file mode 100644 index c36ff5c..0000000 --- a/tests/prev/BENCHMUS.b +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Input file : ./tests/inputs/BENCHMUS.EXE - * File type : EXE - */ - -#include "dcc.h" - - -void main () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -int loc1; -long loc2; -long loc3; -int loc4; -int loc5; - - printf ("enter number of iterations\n"); - scanf ("%ld", &loc0); - printf ("executing %ld iterations\n", loc3); - loc4 = 20; - loc1 = loc4; - loc2 = 1; - - while ((loc2 <= loc3)) { - loc5 = 1; - - while ((loc5 <= 40)) { - loc4 = (((((((((((((((((((((((((loc4 * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * loc4) * 3); - loc5 = (loc5 + 1); - } /* end of while */ - loc2 = (loc2 + 1); - } /* end of while */ - printf ("a=%d\n", loc4); -} - diff --git a/tests/prev/BENCHSHO.EXE.a1 b/tests/prev/BENCHSHO.EXE.a1 deleted file mode 100644 index 904c2c7..0000000 --- a/tests/prev/BENCHSHO.EXE.a1 +++ /dev/null @@ -1,113 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC0E SUB sp, 0Eh -003 000300 8D46FC LEA ax, [bp-4] -004 000303 50 PUSH ax -005 000304 B89401 MOV ax, 194h -006 000307 50 PUSH ax -007 000308 E8E914 CALL near ptr scanf -008 00030B 59 POP cx -009 00030C 59 POP cx -010 00030D FF76FE PUSH word ptr [bp-2] -011 000310 FF76FC PUSH word ptr [bp-4] -012 000313 B89801 MOV ax, 198h -013 000316 50 PUSH ax -014 000317 E8510C CALL near ptr printf -015 00031A 83C406 ADD sp, 6 -016 00031D 8D46F2 LEA ax, [bp-0Eh] -017 000320 50 PUSH ax -018 000321 B8B201 MOV ax, 1B2h -019 000324 50 PUSH ax -020 000325 E8CC14 CALL near ptr scanf -021 000328 59 POP cx -022 000329 59 POP cx -023 00032A 8D46F4 LEA ax, [bp-0Ch] -024 00032D 50 PUSH ax -025 00032E B8B601 MOV ax, 1B6h -026 000331 50 PUSH ax -027 000332 E8BF14 CALL near ptr scanf -028 000335 59 POP cx -029 000336 59 POP cx -030 000337 C746FA0000 MOV word ptr [bp-6], 0 -031 00033C C746F80100 MOV word ptr [bp-8], 1 -032 000341 E97900 JMP L1 - -033 0003BD 8B56FA L1: MOV dx, [bp-6] -034 0003C0 8B46F8 MOV ax, [bp-8] -035 0003C3 3B56FE CMP dx, [bp-2] -036 0003C6 7D03 JGE L2 -037 0003C8 E979FF JMP L3 - -038 000344 C746F60100 L3: MOV word ptr [bp-0Ah], 1 -039 000349 EB64 JMP L4 - -040 0003AF 837EF628 L4: CMP word ptr [bp-0Ah], 28h -041 0003B3 7E96 JLE L5 -042 0003B5 8346F801 ADD word ptr [bp-8], 1 -043 0003B9 8356FA00 ADC word ptr [bp-6], 0 -044 JMP L1 ;Synthetic inst - -045 00034B 8B46F2 L5: MOV ax, [bp-0Eh] -046 00034E 0346F4 ADD ax, [bp-0Ch] -047 000351 0346F6 ADD ax, [bp-0Ah] -048 000354 8946F2 MOV [bp-0Eh], ax -049 000357 8B46F2 MOV ax, [bp-0Eh] -050 00035A D1F8 SAR ax, 1 -051 00035C 8946F4 MOV [bp-0Ch], ax -052 00035F 8B46F4 MOV ax, [bp-0Ch] -053 000362 BB0A00 MOV bx, 0Ah -054 000365 99 CWD -056 000366 F7FB IDIV bx -058 000368 8956F2 MOV [bp-0Eh], dx -059 00036B 8B46F4 MOV ax, [bp-0Ch] -060 00036E 3B46F6 CMP ax, [bp-0Ah] -061 000371 7505 JNE L6 -062 000373 B80100 MOV ax, 1 -063 000376 EB02 JMP L7 - -064 00037A 8946F2 L7: MOV [bp-0Eh], ax -065 00037D 8B46F2 MOV ax, [bp-0Eh] -066 000380 0B46F6 OR ax, [bp-0Ah] -067 000383 8946F4 MOV [bp-0Ch], ax -068 000386 8B46F4 MOV ax, [bp-0Ch] -069 000389 F7D8 NEG ax -070 00038B 1BC0 SBB ax, ax -071 00038D 40 INC ax -072 00038E 8946F2 MOV [bp-0Eh], ax -073 000391 8B46F2 MOV ax, [bp-0Eh] -074 000394 0346F6 ADD ax, [bp-0Ah] -075 000397 8946F4 MOV [bp-0Ch], ax -076 00039A 8B46F4 MOV ax, [bp-0Ch] -077 00039D 3B46F6 CMP ax, [bp-0Ah] -078 0003A0 7E05 JLE L8 -079 0003A2 B80100 MOV ax, 1 -080 0003A5 EB02 JMP L9 - -081 0003A9 8946F2 L9: MOV [bp-0Eh], ax -082 0003AC FF46F6 INC word ptr [bp-0Ah] -083 JMP L4 ;Synthetic inst - -084 0003A7 33C0 L8: XOR ax, ax -085 JMP L9 ;Synthetic inst - -086 000378 33C0 L6: XOR ax, ax -087 JMP L7 ;Synthetic inst - -088 0003CB 7F08 L2: JG L10 -089 0003CD 3B46FC CMP ax, [bp-4] -090 0003D0 7703 JA L10 -091 0003D2 E96FFF JMP L3 - -092 0003D5 FF76F2 L10: PUSH word ptr [bp-0Eh] -093 0003D8 B8BA01 MOV ax, 1BAh -094 0003DB 50 PUSH ax -095 0003DC E88C0B CALL near ptr printf -096 0003DF 59 POP cx -097 0003E0 59 POP cx -098 0003E1 8BE5 MOV sp, bp -099 0003E3 5D POP bp -100 0003E4 C3 RET - - main ENDP - diff --git a/tests/prev/BENCHSHO.EXE.a2 b/tests/prev/BENCHSHO.EXE.a2 deleted file mode 100644 index 6e5837e..0000000 --- a/tests/prev/BENCHSHO.EXE.a2 +++ /dev/null @@ -1,109 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC0E SUB sp, 0Eh -003 000300 8D46FC LEA ax, [bp-4] -004 000303 50 PUSH ax -005 000304 B89401 MOV ax, 194h -006 000307 50 PUSH ax -007 000308 E8E914 CALL near ptr scanf -008 00030B 59 POP cx -009 00030C 59 POP cx -010 00030D FF76FE PUSH word ptr [bp-2] -011 000310 FF76FC PUSH word ptr [bp-4] -012 000313 B89801 MOV ax, 198h -013 000316 50 PUSH ax -014 000317 E8510C CALL near ptr printf -015 00031A 83C406 ADD sp, 6 -016 00031D 8D46F2 LEA ax, [bp-0Eh] -017 000320 50 PUSH ax -018 000321 B8B201 MOV ax, 1B2h -019 000324 50 PUSH ax -020 000325 E8CC14 CALL near ptr scanf -021 000328 59 POP cx -022 000329 59 POP cx -023 00032A 8D46F4 LEA ax, [bp-0Ch] -024 00032D 50 PUSH ax -025 00032E B8B601 MOV ax, 1B6h -026 000331 50 PUSH ax -027 000332 E8BF14 CALL near ptr scanf -028 000335 59 POP cx -029 000336 59 POP cx -030 000337 C746FA0000 MOV word ptr [bp-6], 0 -031 00033C C746F80100 MOV word ptr [bp-8], 1 - -033 0003BD 8B56FA L1: MOV dx, [bp-6] -034 0003C0 8B46F8 MOV ax, [bp-8] -035 0003C3 3B56FE CMP dx, [bp-2] -036 0003C6 7D03 JGE L2 - -038 000344 C746F60100 L3: MOV word ptr [bp-0Ah], 1 - -040 0003AF 837EF628 L4: CMP word ptr [bp-0Ah], 28h -041 0003B3 7E96 JLE L5 -042 0003B5 8346F801 ADD word ptr [bp-8], 1 -043 0003B9 8356FA00 ADC word ptr [bp-6], 0 -044 JMP L1 ;Synthetic inst - -045 00034B 8B46F2 L5: MOV ax, [bp-0Eh] -046 00034E 0346F4 ADD ax, [bp-0Ch] -047 000351 0346F6 ADD ax, [bp-0Ah] -048 000354 8946F2 MOV [bp-0Eh], ax -049 000357 8B46F2 MOV ax, [bp-0Eh] -050 00035A D1F8 SAR ax, 1 -051 00035C 8946F4 MOV [bp-0Ch], ax -052 00035F 8B46F4 MOV ax, [bp-0Ch] -053 000362 BB0A00 MOV bx, 0Ah -054 000365 99 CWD -055 MOV tmp, dx:ax ;Synthetic inst -056 000366 F7FB IDIV bx -057 MOD bx ;Synthetic inst -058 000368 8956F2 MOV [bp-0Eh], dx -059 00036B 8B46F4 MOV ax, [bp-0Ch] -060 00036E 3B46F6 CMP ax, [bp-0Ah] -061 000371 7505 JNE L6 -062 000373 B80100 MOV ax, 1 - -064 00037A 8946F2 L7: MOV [bp-0Eh], ax -065 00037D 8B46F2 MOV ax, [bp-0Eh] -066 000380 0B46F6 OR ax, [bp-0Ah] -067 000383 8946F4 MOV [bp-0Ch], ax -068 000386 8B46F4 MOV ax, [bp-0Ch] -069 000389 F7D8 NEG ax -070 00038B 1BC0 SBB ax, ax -071 00038D 40 INC ax -072 00038E 8946F2 MOV [bp-0Eh], ax -073 000391 8B46F2 MOV ax, [bp-0Eh] -074 000394 0346F6 ADD ax, [bp-0Ah] -075 000397 8946F4 MOV [bp-0Ch], ax -076 00039A 8B46F4 MOV ax, [bp-0Ch] -077 00039D 3B46F6 CMP ax, [bp-0Ah] -078 0003A0 7E05 JLE L8 -079 0003A2 B80100 MOV ax, 1 - -081 0003A9 8946F2 L9: MOV [bp-0Eh], ax -082 0003AC FF46F6 INC word ptr [bp-0Ah] -083 JMP L4 ;Synthetic inst - -084 0003A7 33C0 L8: XOR ax, ax -085 JMP L9 ;Synthetic inst - -086 000378 33C0 L6: XOR ax, ax -087 JMP L7 ;Synthetic inst - -088 0003CB 7F08 L2: JG L10 -089 0003CD 3B46FC CMP ax, [bp-4] -090 0003D0 7703 JA L10 - -092 0003D5 FF76F2 L10: PUSH word ptr [bp-0Eh] -093 0003D8 B8BA01 MOV ax, 1BAh -094 0003DB 50 PUSH ax -095 0003DC E88C0B CALL near ptr printf -096 0003DF 59 POP cx -097 0003E0 59 POP cx -098 0003E1 8BE5 MOV sp, bp -099 0003E3 5D POP bp -100 0003E4 C3 RET - - main ENDP - diff --git a/tests/prev/BENCHSHO.b b/tests/prev/BENCHSHO.b deleted file mode 100644 index 7786608..0000000 --- a/tests/prev/BENCHSHO.b +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Input file : ./tests/inputs/BENCHSHO.EXE - * File type : EXE - */ - -#include "dcc.h" - - -void main () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -int loc1; -int loc2; -int loc3; -long loc4; -long loc5; -int loc6; /* ax */ - - scanf ("%ld", &loc0); - printf ("executing %ld iterations\n", loc5); - scanf ("%ld", &loc1); - scanf ("%ld", &loc2); - loc4 = 1; - - while ((loc4 <= loc5)) { - loc3 = 1; - - while ((loc3 <= 40)) { - loc1 = ((loc1 + loc2) + loc3); - loc2 = (loc1 >> 1); - loc1 = (loc2 % 10); - - if (loc2 == loc3) { - loc6 = 1; - } - else { - loc6 = 0; - } - loc1 = loc6; - loc2 = (loc1 | loc3); - loc1 = !loc2; - loc2 = (loc1 + loc3); - - if (loc2 > loc3) { - loc6 = 1; - } - else { - loc6 = 0; - } - loc1 = loc6; - loc3 = (loc3 + 1); - } /* end of while */ - loc4 = (loc4 + 1); - } /* end of while */ - printf ("a=%d\n", loc1); -} - diff --git a/tests/prev/BYTEOPS.EXE.a1 b/tests/prev/BYTEOPS.EXE.a1 deleted file mode 100644 index 80bd09b..0000000 --- a/tests/prev/BYTEOPS.EXE.a1 +++ /dev/null @@ -1,58 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC02 SUB sp, 2 -003 000300 C646FEFF MOV byte ptr [bp-2], 0FFh -004 000304 C646FF8F MOV byte ptr [bp-1], 8Fh -005 000308 8A46FE MOV al, [bp-2] -006 00030B 0246FF ADD al, [bp-1] -007 00030E 8846FF MOV [bp-1], al -008 000311 8A46FE MOV al, [bp-2] -009 000314 2A46FF SUB al, [bp-1] -010 000317 8846FE MOV [bp-2], al -011 00031A 8A46FE MOV al, [bp-2] -012 00031D B400 MOV ah, 0 -013 00031F 8A56FF MOV dl, [bp-1] -014 000322 B600 MOV dh, 0 -015 000324 F7E2 MUL dx -016 000326 8846FE MOV [bp-2], al -017 000329 8A46FF MOV al, [bp-1] -018 00032C B400 MOV ah, 0 -019 00032E 8A56FE MOV dl, [bp-2] -020 000331 B600 MOV dh, 0 -021 000333 8BDA MOV bx, dx -022 000335 99 CWD -024 000336 F7FB IDIV bx -026 000338 8846FF MOV [bp-1], al -027 00033B 8A46FF MOV al, [bp-1] -028 00033E B400 MOV ah, 0 -029 000340 8A56FE MOV dl, [bp-2] -030 000343 B600 MOV dh, 0 -031 000345 8BDA MOV bx, dx -032 000347 99 CWD -034 000348 F7FB IDIV bx -036 00034A 8856FF MOV [bp-1], dl -037 00034D 8A46FE MOV al, [bp-2] -038 000350 B105 MOV cl, 5 -039 000352 D2E0 SHL al, cl -040 000354 8846FE MOV [bp-2], al -041 000357 8A46FF MOV al, [bp-1] -042 00035A 8A4EFE MOV cl, [bp-2] -043 00035D D2E8 SHR al, cl -044 00035F 8846FF MOV [bp-1], al -045 000362 8A46FF MOV al, [bp-1] -046 000365 B400 MOV ah, 0 -047 000367 50 PUSH ax -048 000368 8A46FE MOV al, [bp-2] -049 00036B B400 MOV ah, 0 -050 00036D 50 PUSH ax -051 00036E B89401 MOV ax, 194h -052 000371 50 PUSH ax -053 000372 E8AB06 CALL near ptr printf -054 000375 83C406 ADD sp, 6 -055 000378 8BE5 MOV sp, bp -056 00037A 5D POP bp -057 00037B C3 RET - - main ENDP - diff --git a/tests/prev/BYTEOPS.EXE.a2 b/tests/prev/BYTEOPS.EXE.a2 deleted file mode 100644 index 01f6b52..0000000 --- a/tests/prev/BYTEOPS.EXE.a2 +++ /dev/null @@ -1,62 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC02 SUB sp, 2 -003 000300 C646FEFF MOV byte ptr [bp-2], 0FFh -004 000304 C646FF8F MOV byte ptr [bp-1], 8Fh -005 000308 8A46FE MOV al, [bp-2] -006 00030B 0246FF ADD al, [bp-1] -007 00030E 8846FF MOV [bp-1], al -008 000311 8A46FE MOV al, [bp-2] -009 000314 2A46FF SUB al, [bp-1] -010 000317 8846FE MOV [bp-2], al -011 00031A 8A46FE MOV al, [bp-2] -012 00031D B400 MOV ah, 0 -013 00031F 8A56FF MOV dl, [bp-1] -014 000322 B600 MOV dh, 0 -015 000324 F7E2 MUL dx -016 000326 8846FE MOV [bp-2], al -017 000329 8A46FF MOV al, [bp-1] -018 00032C B400 MOV ah, 0 -019 00032E 8A56FE MOV dl, [bp-2] -020 000331 B600 MOV dh, 0 -021 000333 8BDA MOV bx, dx -022 000335 99 CWD -023 MOV tmp, dx:ax ;Synthetic inst -024 000336 F7FB IDIV bx -025 MOD bx ;Synthetic inst -026 000338 8846FF MOV [bp-1], al -027 00033B 8A46FF MOV al, [bp-1] -028 00033E B400 MOV ah, 0 -029 000340 8A56FE MOV dl, [bp-2] -030 000343 B600 MOV dh, 0 -031 000345 8BDA MOV bx, dx -032 000347 99 CWD -033 MOV tmp, dx:ax ;Synthetic inst -034 000348 F7FB IDIV bx -035 MOD bx ;Synthetic inst -036 00034A 8856FF MOV [bp-1], dl -037 00034D 8A46FE MOV al, [bp-2] -038 000350 B105 MOV cl, 5 -039 000352 D2E0 SHL al, cl -040 000354 8846FE MOV [bp-2], al -041 000357 8A46FF MOV al, [bp-1] -042 00035A 8A4EFE MOV cl, [bp-2] -043 00035D D2E8 SHR al, cl -044 00035F 8846FF MOV [bp-1], al -045 000362 8A46FF MOV al, [bp-1] -046 000365 B400 MOV ah, 0 -047 000367 50 PUSH ax -048 000368 8A46FE MOV al, [bp-2] -049 00036B B400 MOV ah, 0 -050 00036D 50 PUSH ax -051 00036E B89401 MOV ax, 194h -052 000371 50 PUSH ax -053 000372 E8AB06 CALL near ptr printf -054 000375 83C406 ADD sp, 6 -055 000378 8BE5 MOV sp, bp -056 00037A 5D POP bp -057 00037B C3 RET - - main ENDP - diff --git a/tests/prev/BYTEOPS.b b/tests/prev/BYTEOPS.b deleted file mode 100644 index 219e8cd..0000000 --- a/tests/prev/BYTEOPS.b +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Input file : ./tests/inputs/BYTEOPS.EXE - * File type : EXE - */ - -#include "dcc.h" - - -void main () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -int loc1; -int loc2; - - loc1 = 255; - loc2 = 143; - loc2 = (loc1 + loc2); - loc1 = (loc1 - loc2); - loc1 = (loc1 * loc2); - loc2 = (loc2 / loc1); - loc2 = (loc2 % loc1); - loc1 = (loc1 << 5); - loc2 = (loc2 >> loc1); - printf ("a = %d, b = %d\n", loc1, loc2); -} - diff --git a/tests/prev/FIBOS.EXE.a1 b/tests/prev/FIBOS.EXE.a1 deleted file mode 100644 index 400cc2a..0000000 --- a/tests/prev/FIBOS.EXE.a1 +++ /dev/null @@ -1,90 +0,0 @@ - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC04 SUB sp, 4 -003 000300 56 PUSH si -004 000301 57 PUSH di -005 000302 B89401 MOV ax, 194h -006 000305 50 PUSH ax -007 000306 E8080C CALL near ptr printf -008 000309 59 POP cx -009 00030A 8D46FC LEA ax, [bp-4] -010 00030D 50 PUSH ax -011 00030E B8B101 MOV ax, 1B1h -012 000311 50 PUSH ax -013 000312 E88514 CALL near ptr scanf -014 000315 59 POP cx -015 000316 59 POP cx -016 000317 BE0100 MOV si, 1 -017 00031A EB2D JMP L1 - -018 000349 3B76FC L1: CMP si, [bp-4] -019 00034C 7ECE JLE L2 -020 00034E 33C0 XOR ax, ax -021 000350 50 PUSH ax -022 000351 E87300 CALL near ptr exit -023 000354 59 POP cx -024 000355 5F POP di -025 000356 5E POP si -026 000357 8BE5 MOV sp, bp -027 000359 5D POP bp -028 00035A C3 RET - -029 00031C B8B401 L2: MOV ax, 1B4h -030 00031F 50 PUSH ax -031 000320 E8EE0B CALL near ptr printf -032 000323 59 POP cx -033 000324 8D46FE LEA ax, [bp-2] -034 000327 50 PUSH ax -035 000328 B8C301 MOV ax, 1C3h -036 00032B 50 PUSH ax -037 00032C E86B14 CALL near ptr scanf -038 00032F 59 POP cx -039 000330 59 POP cx -040 000331 FF76FE PUSH word ptr [bp-2] -041 000334 E82400 CALL near ptr proc_1 -042 000337 59 POP cx -043 000338 8BF8 MOV di, ax -044 00033A 57 PUSH di -045 00033B FF76FE PUSH word ptr [bp-2] -046 00033E B8C601 MOV ax, 1C6h -047 000341 50 PUSH ax -048 000342 E8CC0B CALL near ptr printf -049 000345 83C406 ADD sp, 6 -050 000348 46 INC si -051 JMP L1 ;Synthetic inst - - main ENDP - - proc_1 PROC NEAR -000 00035B 55 PUSH bp -001 00035C 8BEC MOV bp, sp -002 00035E 56 PUSH si -003 00035F 8B7604 MOV si, [bp+4] -004 000362 83FE02 CMP si, 2 -005 000365 7E1C JLE L3 -006 000367 8BC6 MOV ax, si -007 000369 48 DEC ax -008 00036A 50 PUSH ax -009 00036B E8EDFF CALL near ptr proc_1 -010 00036E 59 POP cx -011 00036F 50 PUSH ax -012 000370 8BC6 MOV ax, si -013 000372 05FEFF ADD ax, 0FFFEh -014 000375 50 PUSH ax -015 000376 E8E2FF CALL near ptr proc_1 -016 000379 59 POP cx -017 00037A 8BD0 MOV dx, ax -018 00037C 58 POP ax -019 00037D 03C2 ADD ax, dx -020 00037F EB07 JMP L4 - -021 000388 5E L4: POP si -022 000389 5D POP bp -023 00038A C3 RET - -024 000383 B80100 L3: MOV ax, 1 -025 000386 EB00 JMP L4 - - proc_1 ENDP - diff --git a/tests/prev/FIBOS.EXE.a2 b/tests/prev/FIBOS.EXE.a2 deleted file mode 100644 index 51f5edf..0000000 --- a/tests/prev/FIBOS.EXE.a2 +++ /dev/null @@ -1,88 +0,0 @@ - proc_1 PROC NEAR -000 00035B 55 PUSH bp -001 00035C 8BEC MOV bp, sp -002 00035E 56 PUSH si -003 00035F 8B7604 MOV si, [bp+4] -004 000362 83FE02 CMP si, 2 -005 000365 7E1C JLE L1 -006 000367 8BC6 MOV ax, si -007 000369 48 DEC ax -008 00036A 50 PUSH ax -009 00036B E8EDFF CALL near ptr proc_1 -010 00036E 59 POP cx -011 00036F 50 PUSH ax -012 000370 8BC6 MOV ax, si -013 000372 05FEFF ADD ax, 0FFFEh -014 000375 50 PUSH ax -015 000376 E8E2FF CALL near ptr proc_1 -016 000379 59 POP cx -017 00037A 8BD0 MOV dx, ax -018 00037C 58 POP ax -019 00037D 03C2 ADD ax, dx - -021 000388 5E L2: POP si -022 000389 5D POP bp -023 00038A C3 RET - -024 000383 B80100 L1: MOV ax, 1 -025 000386 EB00 JMP L2 - - proc_1 ENDP - - main PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 83EC04 SUB sp, 4 -003 000300 56 PUSH si -004 000301 57 PUSH di -005 000302 B89401 MOV ax, 194h -006 000305 50 PUSH ax -007 000306 E8080C CALL near ptr printf -008 000309 59 POP cx -009 00030A 8D46FC LEA ax, [bp-4] -010 00030D 50 PUSH ax -011 00030E B8B101 MOV ax, 1B1h -012 000311 50 PUSH ax -013 000312 E88514 CALL near ptr scanf -014 000315 59 POP cx -015 000316 59 POP cx -016 000317 BE0100 MOV si, 1 - -018 000349 3B76FC L3: CMP si, [bp-4] -019 00034C 7ECE JLE L4 -020 00034E 33C0 XOR ax, ax -021 000350 50 PUSH ax -022 000351 E87300 CALL near ptr exit -023 000354 59 POP cx -024 000355 5F POP di -025 000356 5E POP si -026 000357 8BE5 MOV sp, bp -027 000359 5D POP bp -028 00035A C3 RET - -029 00031C B8B401 L4: MOV ax, 1B4h -030 00031F 50 PUSH ax -031 000320 E8EE0B CALL near ptr printf -032 000323 59 POP cx -033 000324 8D46FE LEA ax, [bp-2] -034 000327 50 PUSH ax -035 000328 B8C301 MOV ax, 1C3h -036 00032B 50 PUSH ax -037 00032C E86B14 CALL near ptr scanf -038 00032F 59 POP cx -039 000330 59 POP cx -040 000331 FF76FE PUSH word ptr [bp-2] -041 000334 E82400 CALL near ptr proc_1 -042 000337 59 POP cx -043 000338 8BF8 MOV di, ax -044 00033A 57 PUSH di -045 00033B FF76FE PUSH word ptr [bp-2] -046 00033E B8C601 MOV ax, 1C6h -047 000341 50 PUSH ax -048 000342 E8CC0B CALL near ptr printf -049 000345 83C406 ADD sp, 6 -050 000348 46 INC si -051 JMP L3 ;Synthetic inst - - main ENDP - diff --git a/tests/prev/FIBOS.b b/tests/prev/FIBOS.b deleted file mode 100644 index aec76cf..0000000 --- a/tests/prev/FIBOS.b +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Input file : ./tests/inputs/FIBOS.EXE - * File type : EXE - */ - -#include "dcc.h" - - -int proc_1 (int arg0) -/* Takes 2 bytes of parameters. - * High-level language prologue code. - * C calling convention. - */ -{ -int loc1; -int loc2; /* ax */ - - loc1 = arg0; - - if (loc1 > 2) { - loc2 = (proc_1 ((loc1 - 1)) + proc_1 ((loc1 + 0xfffe))); - } - else { - loc2 = 1; - } - return (loc2); -} - - -void main () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -int loc1; -int loc2; -int loc3; -int loc4; - - printf ("Input number of iterations: "); - scanf ("%d", &loc1); - loc3 = 1; - - while ((loc3 <= loc1)) { - printf ("Input number: "); - scanf ("%d", &loc2); - loc4 = proc_1 (loc2); - printf ("fibonacci(%d) = %u\n", loc2, loc4); - loc3 = (loc3 + 1); - } /* end of while */ - exit (0); -} - diff --git a/tests/prev/MIN.EXE.a1 b/tests/prev/MIN.EXE.a1 deleted file mode 100644 index 6036205..0000000 --- a/tests/prev/MIN.EXE.a1 +++ /dev/null @@ -1,39 +0,0 @@ - start PROC NEAR -000 000100 55 PUSH bp -001 000101 8BEC MOV bp, sp -002 000103 83EC02 SUB sp, 2 -003 000106 C746FE0000 MOV word ptr [bp-2], 0 -004 00010B 8B46FE MOV ax, [bp-2] -005 00010E 3D0600 CMP ax, 6 -006 000111 7735 JA L1 -007 000113 8BD8 MOV bx, ax -008 000115 D1E3 SHL bx, 1 -009 000117 2EFFA71C00 JMP word ptr cs:[bx+1Ch];Switch - -010 00012A B80200 MOV ax, 2 ;Case l0 -011 00012D EB1E JMP L2 - -012 00014D 8BE5 L2: MOV sp, bp -013 00014F 5D POP bp -014 000150 C3 RET - -015 00012F B80300 MOV ax, 3 ;Case l1 -016 000132 EB19 JMP L2 - -017 000134 B80700 MOV ax, 7 ;Case l2 -018 000137 EB14 JMP L2 - -019 000139 B80D00 MOV ax, 0Dh ;Case l3 -020 00013C EB0F JMP L2 - -021 000148 B82C00 L1: MOV ax, 2Ch ;Case l4 -022 00014B EB00 JMP L2 - -023 00013E B81700 MOV ax, 17h ;Case l5 -024 000141 EB0A JMP L2 - -025 000143 B80D00 MOV ax, 0Dh ;Case l6 -026 000146 EB05 JMP L2 - - start ENDP - diff --git a/tests/prev/MIN.EXE.a2 b/tests/prev/MIN.EXE.a2 deleted file mode 100644 index 692f456..0000000 --- a/tests/prev/MIN.EXE.a2 +++ /dev/null @@ -1,38 +0,0 @@ - start PROC NEAR -000 000100 55 PUSH bp -001 000101 8BEC MOV bp, sp -002 000103 83EC02 SUB sp, 2 -003 000106 C746FE0000 MOV word ptr [bp-2], 0 -004 00010B 8B46FE MOV ax, [bp-2] -005 00010E 3D0600 CMP ax, 6 -006 000111 7735 JA L1 -007 000113 8BD8 MOV bx, ax -008 000115 D1E3 SHL bx, 1 -009 000117 2EFFA71C00 JMP word ptr cs:[bx+1Ch];Switch - -010 00012A B80200 MOV ax, 2 ;Case l0 - -012 00014D 8BE5 L2: MOV sp, bp -013 00014F 5D POP bp -014 000150 C3 RET - -015 00012F B80300 MOV ax, 3 ;Case l1 -016 000132 EB19 JMP L2 - -017 000134 B80700 MOV ax, 7 ;Case l2 -018 000137 EB14 JMP L2 - -019 000139 B80D00 MOV ax, 0Dh ;Case l3 -020 00013C EB0F JMP L2 - -021 000148 B82C00 L1: MOV ax, 2Ch ;Case l4 -022 00014B EB00 JMP L2 - -023 00013E B81700 MOV ax, 17h ;Case l5 -024 000141 EB0A JMP L2 - -025 000143 B80D00 MOV ax, 0Dh ;Case l6 -026 000146 EB05 JMP L2 - - start ENDP - diff --git a/tests/prev/MIN.b b/tests/prev/MIN.b deleted file mode 100644 index e5a1f30..0000000 --- a/tests/prev/MIN.b +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Input file : ./tests/inputs/MIN.EXE - * File type : EXE - */ - -#include "dcc.h" - - -void start () -/* Takes no parameters. - * High-level language prologue code. - */ -{ -int loc1; -int loc2; /* ax */ -int loc3; /* bx */ - - loc1 = 0; - loc2 = loc1; - - if (loc2 <= 6) { - loc3 = loc2; - } - else { - } -} -