diff --git a/include/Procedure.h b/include/Procedure.h index bca18e5..00f9640 100644 --- a/include/Procedure.h +++ b/include/Procedure.h @@ -83,7 +83,9 @@ public: public: static Function *Create(void *ty=0,int Linkage=0,const std::string &nm="",void *module=0) { - return new Function(ty); + Function *r=new Function(ty); + strncpy(r->name,nm.c_str(),SYMLEN); + return r; } void compoundCond(); void writeProcComments(); diff --git a/include/dcc.h b/include/dcc.h index beda80c..10dc18c 100644 --- a/include/dcc.h +++ b/include/dcc.h @@ -194,13 +194,7 @@ Int hlTypeSize (const COND_EXPR *, Function *); hlType expType (const COND_EXPR *, Function *); boolT insertSubTreeReg (COND_EXPR *, COND_EXPR **, byte, LOCAL_ID *); boolT insertSubTreeLongReg (COND_EXPR *, COND_EXPR **, Int); -//COND_EXPR *concatExps (SEQ_COND_EXPR *, COND_EXPR *, condNodeType); -void initExpStk(); -void pushExpStk (COND_EXPR *); -COND_EXPR *popExpStk(); -Int numElemExpStk(); -boolT emptyExpStk(); /* Exported functions from hlicode.c */ std::string writeCall (Function *, STKFRAME *, Function *, Int *); diff --git a/include/hlicode.h b/include/hlicode.h index 55b866a..c02b921 100644 --- a/include/hlicode.h +++ b/include/hlicode.h @@ -1,4 +1,4 @@ -/* +/* * File: hlIcode.h * Purpose: module definitions for high-level icodes * Date: September 1993 @@ -6,16 +6,8 @@ /* High level icodes opcodes - def in file icode.h */ -/*typedef enum { - HLI_ASSIGN, - INC, - DEC, - HLI_JCOND, - -} hlIcode; */ - - -typedef struct { +struct HLICODE +{ hlIcode opcode; /* hlIcode opcode */ union { /* different operands */ struct { @@ -25,12 +17,4 @@ typedef struct { COND_EXPR *exp; /* for HLI_JCOND, INC, DEC */ } oper; /* operand */ boolT valid; /* has a valid hlIcode */ -} HLICODE; - - -//typedef struct { -// Int numIcodes; /* No. of hlIcode reocrds written */ -// Int numAlloc; /* No. of hlIcode records allocated */ -// HLICODE *hlIcode; /* Array of high-level icodes */ -//} HLICODEREC; - +}; diff --git a/include/icode.h b/include/icode.h index 3809247..133da30 100644 --- a/include/icode.h +++ b/include/icode.h @@ -293,8 +293,8 @@ struct LLTYPE union { /* Source operand if (flg & I) */ dword op; /* idx of immed src op */ struct { /* Call & # actual arg bytes */ - Function *proc; /* ^ target proc (for CALL(F))*/ - Int cb; /* # actual arg bytes */ + Function *proc; /* pointer to target proc (for CALL(F))*/ + int cb; /* # actual arg bytes */ } proc; } immed; DU flagDU; /* def/use of flags */ @@ -312,12 +312,12 @@ struct LLTYPE /* Icode definition: LOW_LEVEL and HIGH_LEVEL */ struct ICODE { -struct DU1 -{ - Int numRegsDef; /* # registers defined by this inst */ - byte regi[MAX_REGS_DEF]; /* registers defined by this inst */ - Int idx[MAX_REGS_DEF][MAX_USES]; /* inst that uses this def */ -}; + struct DU1 + { + Int numRegsDef; /* # registers defined by this inst */ + byte regi[MAX_REGS_DEF]; /* registers defined by this inst */ + Int idx[MAX_REGS_DEF][MAX_USES]; /* inst that uses this def */ + }; icodeType type; /* Icode type */ boolT invalid; /* Has no HIGH_LEVEL equivalent */ BB *inBB; /* BB to which this icode belongs */ @@ -351,6 +351,7 @@ struct DU1 void copyDU(const ICODE &duIcode, operDu _du, operDu duDu); public: boolT removeDefRegi(byte regi, Int thisDefIdx, LOCAL_ID *locId); + void checkHlCall(); }; // This is the icode array object. diff --git a/src/ast.cpp b/src/ast.cpp index e020ce7..dff0c76 100644 --- a/src/ast.cpp +++ b/src/ast.cpp @@ -29,9 +29,6 @@ static const char *condOpSym[] = { " <= ", " < ", " == ", " != ", " > ", " >= ", // COND_EXPR *exp; // struct _EXP_STK *next; //} EXP_STK; -typedef std::list EXP_STK; -static EXP_STK expStk; /* local expression stack */ - /* Returns the integer i in C hexadecimal format */ static char *hexStr (uint16_t i) @@ -950,47 +947,3 @@ void COND_EXPR::release() } delete (this); } - - -/*************************************************************************** - * Expression stack functions - **************************************************************************/ - -/* Reinitalizes the expression stack (expStk) to NULL, by freeing all the - * space allocated (if any). */ -void initExpStk() -{ - expStk.clear(); -} - - -/* Pushes the given expression onto the local stack (expStk). */ -void pushExpStk (COND_EXPR *expr) -{ - expStk.push_back(expr); -} - - -/* Returns the element on the top of the local expression stack (expStk), - * and deallocates the space allocated by this node. - * If there are no elements on the stack, returns NULL. */ -COND_EXPR *popExpStk() -{ - if(expStk.empty()) - return 0; - COND_EXPR *topExp = expStk.back(); - expStk.pop_back(); - return topExp; -} - -/* Returns the number of elements available in the expression stack */ -Int numElemExpStk() -{ - return expStk.size(); -} - -/* Returns whether the expression stack is empty or not */ -boolT emptyExpStk() -{ - return expStk.empty(); -} diff --git a/src/chklib.cpp b/src/chklib.cpp index 0922440..8526422 100644 --- a/src/chklib.cpp +++ b/src/chklib.cpp @@ -426,9 +426,6 @@ void CleanupLibCheck(void) { /* Deallocate all the stuff allocated in SetupLibCheck() */ - if (T1base) free(T1base); - if (T1base) free(T2base); - if (g) free(g); if (ht) free(ht); if (pFunc)free(pFunc); } @@ -456,7 +453,7 @@ boolT LibCheck(Function & pProc) { /* Easy - this function is called main! */ strcpy(pProc.name, "main"); - return FALSE; + return false; } memmove(pat, &prog.Image[fileOffset], PATLEN); diff --git a/src/dataflow.cpp b/src/dataflow.cpp index f86bb24..b873e9c 100644 --- a/src/dataflow.cpp +++ b/src/dataflow.cpp @@ -7,8 +7,65 @@ #include "dcc.h" #include +#include +#include #include +struct ExpStack +{ + typedef std::list EXP_STK; + EXP_STK expStk; /* local expression stack */ + void init(); + void push(COND_EXPR *); + COND_EXPR *pop(); + Int numElem(); + boolT empty(); +}; +/*************************************************************************** + * Expression stack functions + **************************************************************************/ + +/* Reinitalizes the expression stack (expStk) to NULL, by freeing all the + * space allocated (if any). */ +void ExpStack::init() +{ + expStk.clear(); +} + + +/* Pushes the given expression onto the local stack (expStk). */ +void ExpStack::push(COND_EXPR *expr) +{ + expStk.push_back(expr); +} + + +/* Returns the element on the top of the local expression stack (expStk), + * and deallocates the space allocated by this node. + * If there are no elements on the stack, returns NULL. */ +COND_EXPR *ExpStack::pop() +{ + if(expStk.empty()) + return 0; + COND_EXPR *topExp = expStk.back(); + expStk.pop_back(); + return topExp; +} + +/* Returns the number of elements available in the expression stack */ +Int ExpStack::numElem() +{ + return expStk.size(); +} + +/* Returns whether the expression stack is empty or not */ +boolT ExpStack::empty() +{ + return expStk.empty(); +} + +using namespace std; +ExpStack g_exp_stk; /* Returns the index of the local variable or parameter at offset off, if it * is in the stack frame provided. */ @@ -114,13 +171,13 @@ void Function::elimCondCodes () default: notSup = TRUE; + std::cout << hex<loc_ip; reportError (JX_NOT_DEF, defAt->GetLlOpcode()); flg |= PROC_ASM; /* generate asm */ } if (! notSup) { - exp = COND_EXPR::boolOp (lhs, rhs, - condOpJCond[useAt->GetLlOpcode()-iJB]); + exp = COND_EXPR::boolOp (lhs, rhs,condOpJCond[useAt->GetLlOpcode()-iJB]); useAt->setJCond(exp); } } @@ -602,7 +659,7 @@ static void processCArg (Function * pp, Function * pProc, ICODE * picode, Int nu /* if (numArgs == 0) return; */ - exp = popExpStk(); + exp = g_exp_stk.pop(); if (pp->flg & PROC_ISLIB) /* library function */ { if (pp->args.numArgs > 0) @@ -628,7 +685,6 @@ static void processCArg (Function * pp, Function * pProc, ICODE * picode, Int nu *k += hlTypeSize (exp, pProc); } - /* Eliminates extraneous intermediate icode instructions when finding * expressions. Generates new hlIcodes in the form of expression trees. * For HLI_CALL hlIcodes, places the arguments in the argument list. */ @@ -647,7 +703,7 @@ void Function::findExps() ID *retVal; /* function return value */ /* Initialize expression stack */ - initExpStk(); + g_exp_stk.init(); /* Traverse tree in dfsLast order */ for (i = 0; i < numBBs; i++) @@ -726,7 +782,7 @@ void Function::findExps() (ticode->ic.hl.opcode != HLI_RET))) continue; - exp = popExpStk(); /* pop last exp pushed */ + exp = g_exp_stk.pop(); /* pop last exp pushed */ switch (ticode->ic.hl.opcode) { case HLI_ASSIGN: forwardSubs (picode->ic.hl.oper.exp, exp, @@ -866,7 +922,7 @@ void Function::findExps() (ticode->ic.hl.opcode != HLI_RET))) continue; - exp = popExpStk(); /* pop last exp pushed */ + exp = g_exp_stk.pop(); /* pop last exp pushed */ switch (ticode->ic.hl.opcode) { case HLI_ASSIGN: forwardSubsLong (picode->ic.hl.oper.exp->expr.ident.idNode.longIdx, @@ -945,7 +1001,7 @@ void Function::findExps() * expression stack */ else if (picode->ic.hl.opcode == HLI_PUSH) { - pushExpStk (picode->ic.hl.oper.exp); + g_exp_stk.push(picode->ic.hl.oper.exp); picode->invalidate(); numHlIcodes--; } @@ -965,7 +1021,7 @@ void Function::findExps() cb = pp->cbParam; /* fixed # arguments */ for (k = 0, numArgs = 0; k < cb; numArgs++) { - exp = popExpStk(); + exp = g_exp_stk.pop(); if (pp->flg & PROC_ISLIB) /* library function */ { if (pp->args.numArgs > 0) @@ -990,7 +1046,7 @@ void Function::findExps() for (k = 0; k < cb; numArgs++) processCArg (pp, this, &(*picode), numArgs, &k); else if ((cb == 0) && (picode->ic.ll.flg & REST_STK)) - while (! emptyExpStk()) + while (! g_exp_stk.empty()) { processCArg (pp, this, &(*picode), numArgs, &k); numArgs++; diff --git a/src/hlicode.cpp b/src/hlicode.cpp index de8f7be..d6d0b77 100644 --- a/src/hlicode.cpp +++ b/src/hlicode.cpp @@ -37,6 +37,10 @@ void ICODE::setAsgn(COND_EXPR *lhs, COND_EXPR *rhs) ic.hl.oper.asgn.lhs = lhs; ic.hl.oper.asgn.rhs = rhs; } +void ICODE::checkHlCall() +{ + //assert((ic.ll.immed.proc.cb != 0)||ic.ll.immed.proc.proc!=0); +} /* Places the new HLI_CALL high-level operand in the high-level icode array */ void ICODE::newCallHl() { @@ -44,10 +48,16 @@ void ICODE::newCallHl() ic.hl.opcode = HLI_CALL; ic.hl.oper.call.proc = ic.ll.immed.proc.proc; ic.hl.oper.call.args = new STKFRAME; + if (ic.ll.immed.proc.cb != 0) ic.hl.oper.call.args->cb = ic.ll.immed.proc.cb; - else + else if(ic.hl.oper.call.proc) ic.hl.oper.call.args->cb =ic.hl.oper.call.proc->cbParam; + else + { + printf("Function with no cb set, and no valid oper.call.proc , probaby indirect call\n"); + ic.hl.oper.call.args->cb = 0; + } } @@ -148,16 +158,20 @@ void Function::highLevelGen() } switch (pIcode->ic.ll.opcode) { - case iADD: rhs = COND_EXPR::boolOp (lhs, rhs, ADD); + case iADD: + rhs = COND_EXPR::boolOp (lhs, rhs, ADD); pIcode->setAsgn(lhs, rhs); break; - case iAND: rhs = COND_EXPR::boolOp (lhs, rhs, AND); + case iAND: + rhs = COND_EXPR::boolOp (lhs, rhs, AND); pIcode->setAsgn(lhs, rhs); break; case iCALL: - case iCALLF: pIcode->newCallHl(); + case iCALLF: + pIcode->checkHlCall(); + pIcode->newCallHl(); break; case iDEC: @@ -259,7 +273,8 @@ void Function::highLevelGen() case iXCHG: break; - case iXOR: rhs = COND_EXPR::boolOp (lhs, rhs, XOR); + case iXOR: + rhs = COND_EXPR::boolOp (lhs, rhs, XOR); pIcode->setAsgn(lhs, rhs); break; } diff --git a/src/parser.cpp b/src/parser.cpp index 9b14a3b..9843581 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -64,6 +64,7 @@ void parse (CALL_GRAPH * *pcallGraph) else { /* Create initial procedure at program start address */ + strcpy(pProcList.front().name, "start"); pProcList.front().procEntry = (dword)state.IP; } /* The state info is for the first procedure */ @@ -109,7 +110,7 @@ Int strSize (byte *sym, char delim) for (i = 0; *sym++ != delim; i++) ; return (i+1); } - +Function *fakeproc=Function::Create(0,0,"fake"); /* FollowCtrl - Given an initial procedure, state information and symbol table * builds a list of procedures reachable from the initial procedure @@ -513,6 +514,7 @@ boolT Function::process_JMP (ICODE * pIcode, STATE *pstate, CALL_GRAPH * pcallGr * be assumed that if an assembler program contains a CALL that the * programmer expected it to come back - otherwise surely a JMP would * have been used. */ + boolT Function::process_CALL (ICODE * pIcode, CALL_GRAPH * pcallGraph, STATE *pstate) { Int ip = Icode.GetNumIcodes() - 1; @@ -522,16 +524,17 @@ boolT Function::process_CALL (ICODE * pIcode, CALL_GRAPH * pcallGraph, STATE *ps /* For Indirect Calls, find the function address */ indirect = FALSE; - if (! (pIcode->ic.ll.flg & I)) + //pIcode->ic.ll.immed.proc.proc=fakeproc; + if ( not pIcode->isLlFlag(I) ) { /* Not immediate, i.e. indirect call */ if (pIcode->ic.ll.dst.regi && (!option.Calls)) { /* We have not set the brave option to attempt to follow - the execution path through register indirect calls. - So we just exit this function, and ignore the call. - We probably should not have parsed this deep, anyway. + the execution path through register indirect calls. + So we just exit this function, and ignore the call. + We probably should not have parsed this deep, anyway. */ return FALSE; } @@ -616,7 +619,8 @@ boolT Function::process_CALL (ICODE * pIcode, CALL_GRAPH * pcallGraph, STATE *ps else pcallGraph->insertCallGraph (this, iter); - Icode.GetIcode(ip)->ic.ll.immed.proc.proc = &(*iter); // ^ target proc + Icode[ip].ic.ll.immed.proc.proc = &(*iter); // ^ target proc + /* return ((p->flg & TERMINATES) != 0); */ return FALSE; } @@ -905,8 +909,7 @@ dword duReg[] = { 0x00, * pstate: ptr to current procedure state * size : size of the operand * ix : current index into icode array */ -static void use (opLoc d, ICODE * pIcode, Function * pProc, STATE * pstate, Int size, - Int ix) +static void use (opLoc d, ICODE * pIcode, Function * pProc, STATE * pstate, Int size, Int ix) { ICODEMEM * pm = (d == SRC)? &pIcode->ic.ll.src: &pIcode->ic.ll.dst; SYM * psym; diff --git a/src/proplong.cpp b/src/proplong.cpp index 432a559..2e935a1 100644 --- a/src/proplong.cpp +++ b/src/proplong.cpp @@ -380,109 +380,110 @@ void Function::propLongReg (Int i, ID *pLocId) } /* If no definition backwards, check forward for a use of this long reg */ - if (idx <= 0) - for (idx = pLocId->idx[j] + 1; idx < this->Icode.GetNumIcodes() - 1; idx++) - { - pIcode = Icode.begin()+(idx); - if ((pIcode->type == HIGH_LEVEL) || (pIcode->invalid == TRUE)) - continue; + if (idx > 0) + continue; + for (idx = pLocId->idx[j] + 1; idx < Icode.size() - 1; idx++) + { + pIcode = Icode.begin()+(idx); + if ((pIcode->type == HIGH_LEVEL) || (pIcode->invalid == TRUE)) + continue; - if (pIcode->ic.ll.opcode == (pIcode+1)->ic.ll.opcode) - switch (pIcode->ic.ll.opcode) { - case iMOV: - if ((pLocId->id.longId.h == pIcode->ic.ll.src.regi) && - (pLocId->id.longId.l == (pIcode+1)->ic.ll.src.regi)) - { - rhs = COND_EXPR::idLongIdx (i); - pIcode->setRegDU( (pIcode+1)->ic.ll.src.regi, eUSE); - lhs = COND_EXPR::idLong (&this->localId, DST, pIcode, + if (pIcode->ic.ll.opcode == (pIcode+1)->ic.ll.opcode) + switch (pIcode->ic.ll.opcode) { + case iMOV: + if ((pLocId->id.longId.h == pIcode->ic.ll.src.regi) && + (pLocId->id.longId.l == (pIcode+1)->ic.ll.src.regi)) + { + rhs = COND_EXPR::idLongIdx (i); + pIcode->setRegDU( (pIcode+1)->ic.ll.src.regi, eUSE); + lhs = COND_EXPR::idLong (&this->localId, DST, pIcode, HIGH_FIRST, idx, eDEF, 1); - pIcode->setAsgn(lhs, rhs); - (pIcode+1)->invalidate(); - idx = this->Icode.GetNumIcodes(); /* to exit the loop */ - } - break; + pIcode->setAsgn(lhs, rhs); + (pIcode+1)->invalidate(); + idx = this->Icode.GetNumIcodes(); /* to exit the loop */ + } + break; - case iPUSH: - if ((pLocId->id.longId.h == pIcode->ic.ll.src.regi) && - (pLocId->id.longId.l == (pIcode+1)->ic.ll.src.regi)) - { - rhs = COND_EXPR::idLongIdx (i); - pIcode->setRegDU( (pIcode+1)->ic.ll.src.regi, eUSE); - pIcode->setUnary(HLI_PUSH, lhs); - (pIcode+1)->invalidate(); - } - idx = this->Icode.GetNumIcodes(); /* to exit the loop */ - break; + case iPUSH: + if ((pLocId->id.longId.h == pIcode->ic.ll.src.regi) && + (pLocId->id.longId.l == (pIcode+1)->ic.ll.src.regi)) + { + rhs = COND_EXPR::idLongIdx (i); + pIcode->setRegDU( (pIcode+1)->ic.ll.src.regi, eUSE); + pIcode->setUnary(HLI_PUSH, lhs); + (pIcode+1)->invalidate(); + } + idx = this->Icode.GetNumIcodes(); /* to exit the loop */ + break; - /*** others missing ****/ + /*** others missing ****/ - 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)) - { - lhs = COND_EXPR::idLongIdx (i); - pIcode->setRegDU( pmH->regi, USE_DEF); - rhs = COND_EXPR::idLong (&this->localId, SRC, pIcode, + 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)) + { + lhs = COND_EXPR::idLongIdx (i); + pIcode->setRegDU( pmH->regi, USE_DEF); + rhs = COND_EXPR::idLong (&this->localId, SRC, pIcode, LOW_FIRST, idx, eUSE, 1); - switch (pIcode->ic.ll.opcode) { - case iAND: rhs = COND_EXPR::boolOp (lhs, rhs, AND); - break; - case iOR: rhs = COND_EXPR::boolOp (lhs, rhs, OR); - break; - case iXOR: rhs = COND_EXPR::boolOp (lhs, rhs, XOR); - break; - } - pIcode->setAsgn(lhs, rhs); - (pIcode+1)->invalidate(); - idx = 0; + switch (pIcode->ic.ll.opcode) { + case iAND: rhs = COND_EXPR::boolOp (lhs, rhs, AND); + break; + case iOR: rhs = COND_EXPR::boolOp (lhs, rhs, OR); + break; + case iXOR: rhs = COND_EXPR::boolOp (lhs, rhs, XOR); + break; } - break; - } /* eos */ + pIcode->setAsgn(lhs, 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, i, idx, this, - &rhs, &lhs, off) == TRUE) - longJCond23 (rhs, lhs, pIcode, &idx, this, arc, off); - } + /* 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, i, idx, this, + &rhs, &lhs, off) == TRUE) + longJCond23 (rhs, lhs, pIcode, &idx, this, arc, off); + } - /* Check for long conditional equality or inequality. This requires + /* 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, i, idx, this, - &rhs, &lhs, off) == TRUE) - longJCond22 (rhs, lhs, pIcode, &idx); - } + else if ((pIcode->ic.ll.opcode == iCMP) && + (isLong22 (pIcode, pEnd, &off))) + { + if (checkLongRegEq (pLocId->id.longId, pIcode, i, idx, this, + &rhs, &lhs, off) == TRUE) + longJCond22 (rhs, lhs, pIcode, &idx); + } - /* Check for OR regH, regL + /* 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) && ((pIcode+1) < pEnd) && - (isJCond ((pIcode+1)->ic.ll.opcode))) + else if ((pIcode->ic.ll.opcode == iOR) && ((pIcode+1) < pEnd) && + (isJCond ((pIcode+1)->ic.ll.opcode))) + { + if ((pIcode->ic.ll.dst.regi == pLocId->id.longId.h) && + (pIcode->ic.ll.src.regi == pLocId->id.longId.l)) { - if ((pIcode->ic.ll.dst.regi == pLocId->id.longId.h) && - (pIcode->ic.ll.src.regi == pLocId->id.longId.l)) - { - lhs = COND_EXPR::idLongIdx (i); + lhs = COND_EXPR::idLongIdx (i); - rhs = COND_EXPR::idKte (0, 4); /* long 0 */ - lhs = COND_EXPR::boolOp (lhs, rhs, - condOpJCond[(pIcode+1)->ic.ll.opcode - iJB]); - (pIcode+1)->setJCond(lhs); - (pIcode+1)->copyDU(*pIcode, eUSE, eUSE); - pIcode->invalidate(); - } + rhs = COND_EXPR::idKte (0, 4); /* long 0 */ + lhs = COND_EXPR::boolOp (lhs, rhs, + condOpJCond[(pIcode+1)->ic.ll.opcode - iJB]); + (pIcode+1)->setJCond(lhs); + (pIcode+1)->copyDU(*pIcode, eUSE, eUSE); + pIcode->invalidate(); } + } - } /* end for */ + } /* end for */ } /* end for */ } diff --git a/tests/inputs/ZORK2.COM b/tests/inputs/ZORK2.COM new file mode 100644 index 0000000..d31301e Binary files /dev/null and b/tests/inputs/ZORK2.COM differ diff --git a/tests/prev/BENCHFN.EXE.a1 b/tests/prev/BENCHFN.EXE.a1 index 14e823d..0858e4b 100644 --- a/tests/prev/BENCHFN.EXE.a1 +++ b/tests/prev/BENCHFN.EXE.a1 @@ -1,109 +1,109 @@ 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 +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 +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 +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 +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 +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 +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 +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 +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 index 98d7e04..3215eca 100644 --- a/tests/prev/BENCHFN.EXE.a2 +++ b/tests/prev/BENCHFN.EXE.a2 @@ -1,107 +1,107 @@ proc_4 PROC NEAR -000 0002FA 55 PUSH bp -001 0002FB 8BEC MOV bp, sp -002 0002FD 5D POP bp -003 0002FE C3 RET +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 +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 +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 +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 +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 +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 +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 +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/BENCHLNG.EXE.a1 b/tests/prev/BENCHLNG.EXE.a1 index a3fa2ec..9340fc0 100644 --- a/tests/prev/BENCHLNG.EXE.a1 +++ b/tests/prev/BENCHLNG.EXE.a1 @@ -1,242 +1,242 @@ 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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +113 000400 33C0 L11: XOR ax, ax 114 JMP L13 ;Synthetic inst -115 0003CE 33C0 L9: XOR ax, ax +115 0003CE 33C0 L9: XOR ax, ax 116 JMP L10 ;Synthetic inst -117 0003A6 33C0 L7: XOR ax, ax +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 index 3fab437..5ae414e 100644 --- a/tests/prev/BENCHLNG.EXE.a2 +++ b/tests/prev/BENCHLNG.EXE.a2 @@ -1,234 +1,234 @@ 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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +113 000400 33C0 L21: XOR ax, ax 114 JMP L23 ;Synthetic inst -115 0003CE 33C0 L19: XOR ax, ax +115 0003CE 33C0 L19: XOR ax, ax 116 JMP L20 ;Synthetic inst -117 0003A6 33C0 L17: XOR ax, ax +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 +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 +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 +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 +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 index 71b92d3..da66c79 100644 --- a/tests/prev/BENCHLNG.b +++ b/tests/prev/BENCHLNG.b @@ -14,87 +14,87 @@ long LMOD@ (long arg0, int arg2, int arg3) * 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + L8: TEST bx, 4 + JE L9 + NEG dx + NEG ax + SBB dx, 0 -L9: POP di - POP si - POP bp - RETF 8 + 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 + 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 + L10: XOR dx, dx + JMP L9 } diff --git a/tests/prev/BENCHMUL.EXE.a1 b/tests/prev/BENCHMUL.EXE.a1 index 9e41585..ca69338 100644 --- a/tests/prev/BENCHMUL.EXE.a1 +++ b/tests/prev/BENCHMUL.EXE.a1 @@ -1,100 +1,100 @@ 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 +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 +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 +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 +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 +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 +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 index 39303a6..2419022 100644 --- a/tests/prev/BENCHMUL.EXE.a2 +++ b/tests/prev/BENCHMUL.EXE.a2 @@ -1,98 +1,98 @@ 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 +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 +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 +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 +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 +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 +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/BENCHMUS.EXE.a1 b/tests/prev/BENCHMUS.EXE.a1 index 0edcb0c..60b043f 100644 --- a/tests/prev/BENCHMUS.EXE.a1 +++ b/tests/prev/BENCHMUS.EXE.a1 @@ -1,90 +1,90 @@ 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 +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 +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 +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 +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 +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 +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 index 343d780..2495a57 100644 --- a/tests/prev/BENCHMUS.EXE.a2 +++ b/tests/prev/BENCHMUS.EXE.a2 @@ -1,88 +1,88 @@ 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 +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 +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 +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 +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 +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 +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/BENCHSHO.EXE.a1 b/tests/prev/BENCHSHO.EXE.a1 index f16494f..904c2c7 100644 --- a/tests/prev/BENCHSHO.EXE.a1 +++ b/tests/prev/BENCHSHO.EXE.a1 @@ -1,113 +1,113 @@ 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 +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 +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 +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 +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 +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 +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] +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 +084 0003A7 33C0 L8: XOR ax, ax 085 JMP L9 ;Synthetic inst -086 000378 33C0 L6: XOR ax, ax +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 +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 +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 index c2b9e42..6e5837e 100644 --- a/tests/prev/BENCHSHO.EXE.a2 +++ b/tests/prev/BENCHSHO.EXE.a2 @@ -1,109 +1,109 @@ 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 +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 +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 +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 +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 +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 +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 +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 +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] +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 +084 0003A7 33C0 L8: XOR ax, ax 085 JMP L9 ;Synthetic inst -086 000378 33C0 L6: XOR ax, ax +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 +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 +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/BYTEOPS.EXE.a1 b/tests/prev/BYTEOPS.EXE.a1 index 1ee2f72..80bd09b 100644 --- a/tests/prev/BYTEOPS.EXE.a1 +++ b/tests/prev/BYTEOPS.EXE.a1 @@ -1,58 +1,58 @@ 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 +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 index 4967d4f..01f6b52 100644 --- a/tests/prev/BYTEOPS.EXE.a2 +++ b/tests/prev/BYTEOPS.EXE.a2 @@ -1,62 +1,62 @@ 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 +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 +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 +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 +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 +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/FIBOS.EXE.a1 b/tests/prev/FIBOS.EXE.a1 index 471fed6..400cc2a 100644 --- a/tests/prev/FIBOS.EXE.a1 +++ b/tests/prev/FIBOS.EXE.a1 @@ -1,90 +1,90 @@ 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 +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 +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 +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 +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 +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 +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 index 433c14d..51f5edf 100644 --- a/tests/prev/FIBOS.EXE.a2 +++ b/tests/prev/FIBOS.EXE.a2 @@ -1,87 +1,87 @@ 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 +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 +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 +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 +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 +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 +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/MIN.EXE.a1 b/tests/prev/MIN.EXE.a1 index 26e919c..6036205 100644 --- a/tests/prev/MIN.EXE.a1 +++ b/tests/prev/MIN.EXE.a1 @@ -1,39 +1,39 @@ - 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 + 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 +011 00012D EB1E JMP L2 -012 00014D 8BE5 L2: MOV sp, bp -013 00014F 5D POP bp -014 000150 C3 RET +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 +016 000132 EB19 JMP L2 017 000134 B80700 MOV ax, 7 ;Case l2 -018 000137 EB14 JMP L2 +018 000137 EB14 JMP L2 019 000139 B80D00 MOV ax, 0Dh ;Case l3 -020 00013C EB0F JMP L2 +020 00013C EB0F JMP L2 021 000148 B82C00 L1: MOV ax, 2Ch ;Case l4 -022 00014B EB00 JMP L2 +022 00014B EB00 JMP L2 023 00013E B81700 MOV ax, 17h ;Case l5 -024 000141 EB0A JMP L2 +024 000141 EB0A JMP L2 025 000143 B80D00 MOV ax, 0Dh ;Case l6 -026 000146 EB05 JMP L2 +026 000146 EB05 JMP L2 - ENDP + start ENDP diff --git a/tests/prev/MIN.EXE.a2 b/tests/prev/MIN.EXE.a2 index ba41ff9..692f456 100644 --- a/tests/prev/MIN.EXE.a2 +++ b/tests/prev/MIN.EXE.a2 @@ -1,38 +1,38 @@ - 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 + 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 +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 +016 000132 EB19 JMP L2 017 000134 B80700 MOV ax, 7 ;Case l2 -018 000137 EB14 JMP L2 +018 000137 EB14 JMP L2 019 000139 B80D00 MOV ax, 0Dh ;Case l3 -020 00013C EB0F JMP L2 +020 00013C EB0F JMP L2 021 000148 B82C00 L1: MOV ax, 2Ch ;Case l4 -022 00014B EB00 JMP L2 +022 00014B EB00 JMP L2 023 00013E B81700 MOV ax, 17h ;Case l5 -024 000141 EB0A JMP L2 +024 000141 EB0A JMP L2 025 000143 B80D00 MOV ax, 0Dh ;Case l6 -026 000146 EB05 JMP L2 +026 000146 EB05 JMP L2 - ENDP + start ENDP diff --git a/tests/prev/MIN.b b/tests/prev/MIN.b index f140e3b..e5a1f30 100644 --- a/tests/prev/MIN.b +++ b/tests/prev/MIN.b @@ -6,7 +6,7 @@ #include "dcc.h" -void () +void start () /* Takes no parameters. * High-level language prologue code. */