VirtualBox

Changeset 41734 in vbox for trunk/src/VBox/Disassembler


Ignore:
Timestamp:
Jun 15, 2012 12:20:13 AM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
78542
Message:

DISCPUSTATE: s/prefix/fPrefix/ and a couple of forgotten opcode uses.

Location:
trunk/src/VBox/Disassembler
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Disassembler/DisasmCore.cpp

    r41733 r41734  
    304304        pCpu->opmode        = enmCpuMode;
    305305    }
    306     pCpu->prefix            = DISPREFIX_NONE;
     306    pCpu->fPrefix           = DISPREFIX_NONE;
    307307    pCpu->idxSegPrefix      = DISSELREG_DS;
    308308    pCpu->uInstrAddr        = uInstrAddr;
     
    346346                /** Last prefix byte (for SSE2 extension tables); don't include the REX prefix */
    347347                pCpu->bLastPrefix = opcode;
    348                 pCpu->prefix &= ~DISPREFIX_REX;
     348                pCpu->fPrefix &= ~DISPREFIX_REX;
    349349            }
    350350
     
    363363                    || pCpu->idxSegPrefix >= DISSELREG_FS)
    364364                {
    365                     pCpu->prefix    |= DISPREFIX_SEG;
     365                    pCpu->fPrefix   |= DISPREFIX_SEG;
    366366                }
    367367                iByte += sizeof(uint8_t);
     
    370370            // lock prefix byte
    371371            case OP_LOCK:
    372                 pCpu->prefix |= DISPREFIX_LOCK;
     372                pCpu->fPrefix |= DISPREFIX_LOCK;
    373373                iByte       += sizeof(uint8_t);
    374374                continue;   //fetch the next byte
     
    376376            // address size override prefix byte
    377377            case OP_ADDRSIZE:
    378                 pCpu->prefix |= DISPREFIX_ADDRSIZE;
     378                pCpu->fPrefix |= DISPREFIX_ADDRSIZE;
    379379                if (pCpu->mode == DISCPUMODE_16BIT)
    380380                    pCpu->addrmode = DISCPUMODE_32BIT;
     
    390390            // operand size override prefix byte
    391391            case OP_OPSIZE:
    392                 pCpu->prefix |= DISPREFIX_OPSIZE;
     392                pCpu->fPrefix |= DISPREFIX_OPSIZE;
    393393                if (pCpu->mode == DISCPUMODE_16BIT)
    394394                    pCpu->opmode = DISCPUMODE_32BIT;
     
    401401            // rep and repne are not really prefixes, but we'll treat them as such
    402402            case OP_REPE:
    403                 pCpu->prefix |= DISPREFIX_REP;
     403                pCpu->fPrefix |= DISPREFIX_REP;
    404404                iByte       += sizeof(uint8_t);
    405405                continue;   //fetch the next byte
    406406
    407407            case OP_REPNE:
    408                 pCpu->prefix |= DISPREFIX_REPNE;
     408                pCpu->fPrefix |= DISPREFIX_REPNE;
    409409                iByte       += sizeof(uint8_t);
    410410                continue;   //fetch the next byte
     
    413413                Assert(pCpu->mode == DISCPUMODE_64BIT);
    414414                /* REX prefix byte */
    415                 pCpu->prefix    |= DISPREFIX_REX;
     415                pCpu->fPrefix   |= DISPREFIX_REX;
    416416                pCpu->fRexPrefix = DISPREFIX_REX_OP_2_FLAGS(paOneByteMap[codebyte].param1);
    417417                iByte           += sizeof(uint8_t);
     
    438438        *pcbInstr = iByte;
    439439
    440     if (pCpu->prefix & DISPREFIX_LOCK)
     440    if (pCpu->fPrefix & DISPREFIX_LOCK)
    441441        disValidateLockSequence(pCpu);
    442442
     
    482482        else
    483483        if (    (pOp->optype & DISOPTYPE_DEFAULT_64_OP_SIZE)
    484             &&  !(pCpu->prefix & DISPREFIX_OPSIZE))
     484            &&  !(pCpu->fPrefix & DISPREFIX_OPSIZE))
    485485            pCpu->opmode = DISCPUMODE_64BIT;
    486486    }
     
    561561        else
    562562        if (    (fpop->optype & DISOPTYPE_DEFAULT_64_OP_SIZE)
    563             &&  !(pCpu->prefix & DISPREFIX_OPSIZE))
     563            &&  !(pCpu->fPrefix & DISPREFIX_OPSIZE))
    564564            pCpu->opmode = DISCPUMODE_64BIT;
    565565    }
     
    662662    pCpu->SIB.Bits.Scale = SIB_SCALE(SIB);
    663663
    664     if (pCpu->prefix & DISPREFIX_REX)
     664    if (pCpu->fPrefix & DISPREFIX_REX)
    665665    {
    666666        /* REX.B extends the Base field if not scaled index + disp32 */
     
    695695    pCpu->SIB.Bits.Scale = SIB_SCALE(SIB);
    696696
    697     if (pCpu->prefix & DISPREFIX_REX)
     697    if (pCpu->fPrefix & DISPREFIX_REX)
    698698    {
    699699        /* REX.B extends the Base field. */
     
    739739                if (    pCpu->pCurInstr->opcode == OP_MOV_CR
    740740                    &&  pCpu->opmode == DISCPUMODE_32BIT
    741                     &&  (pCpu->prefix & DISPREFIX_LOCK))
     741                    &&  (pCpu->fPrefix & DISPREFIX_LOCK))
    742742                {
    743                     pCpu->prefix &= ~DISPREFIX_LOCK;
     743                    pCpu->fPrefix &= ~DISPREFIX_LOCK;
    744744                    pParam->base.reg_ctrl = DISCREG_CR8;
    745745                }
     
    10801080        pCpu->ModRM.Bits.Mod = 3;
    10811081
    1082     if (pCpu->prefix & DISPREFIX_REX)
     1082    if (pCpu->fPrefix & DISPREFIX_REX)
    10831083    {
    10841084        Assert(pCpu->mode == DISCPUMODE_64BIT);
     
    11261126        pCpu->ModRM.Bits.Mod = 3;
    11271127
    1128     if (pCpu->prefix & DISPREFIX_REX)
     1128    if (pCpu->fPrefix & DISPREFIX_REX)
    11291129    {
    11301130        Assert(pCpu->mode == DISCPUMODE_64BIT);
     
    15701570            if (    (pOp->optype & DISOPTYPE_REXB_EXTENDS_OPREG)
    15711571                &&  pParam == &pCpu->param1             /* ugly assumption that it only applies to the first parameter */
    1572                 &&  (pCpu->prefix & DISPREFIX_REX)
     1572                &&  (pCpu->fPrefix & DISPREFIX_REX)
    15731573                &&  (pCpu->fRexPrefix & DISPREFIX_REX_FLAGS))
    15741574                pParam->base.reg_gen += 8;
     
    16141614            if (    (pOp->optype & DISOPTYPE_REXB_EXTENDS_OPREG)
    16151615                &&  pParam == &pCpu->param1             /* ugly assumption that it only applies to the first parameter */
    1616                 &&  (pCpu->prefix & DISPREFIX_REX)
     1616                &&  (pCpu->fPrefix & DISPREFIX_REX)
    16171617                &&  (pCpu->fRexPrefix & DISPREFIX_REX_FLAGS))
    16181618                pParam->base.reg_gen += 8;              /* least significant byte of R8-R15 */
     
    17601760
    17611761                /* Cancel prefix changes. */
    1762                 pCpu->prefix &= ~DISPREFIX_OPSIZE;
     1762                pCpu->fPrefix &= ~DISPREFIX_OPSIZE;
    17631763                pCpu->opmode  = pCpu->mode;
    17641764            }
     
    17721772
    17731773                /* Cancel prefix changes. */
    1774                 pCpu->prefix &= ~DISPREFIX_REPNE;
     1774                pCpu->fPrefix &= ~DISPREFIX_REPNE;
    17751775            }
    17761776            break;
     
    17831783
    17841784                /* Cancel prefix changes. */
    1785                 pCpu->prefix &= ~DISPREFIX_REP;
     1785                pCpu->fPrefix &= ~DISPREFIX_REP;
    17861786            }
    17871787            break;
     
    18271827
    18281828                /* Cancel prefix changes. */
    1829                 pCpu->prefix &= ~DISPREFIX_OPSIZE;
     1829                pCpu->fPrefix &= ~DISPREFIX_OPSIZE;
    18301830                pCpu->opmode  = pCpu->mode;
    18311831            }
     
    18441844
    18451845                /* Cancel prefix changes. */
    1846                 pCpu->prefix &= ~DISPREFIX_REPNE;
     1846                pCpu->fPrefix &= ~DISPREFIX_REPNE;
    18471847            }
    18481848        }
     
    18781878
    18791879            /* Cancel prefix changes. */
    1880             pCpu->prefix &= ~DISPREFIX_OPSIZE;
     1880            pCpu->fPrefix &= ~DISPREFIX_OPSIZE;
    18811881            pCpu->opmode  = pCpu->mode;
    18821882        }
     
    18951895    NOREF(pParam);
    18961896
    1897     if (pCpu->prefix & DISPREFIX_REP)
     1897    if (pCpu->fPrefix & DISPREFIX_REP)
    18981898    {
    18991899        pOp = &g_aMapX86_NopPause[1]; /* PAUSE */
    1900         pCpu->prefix &= ~DISPREFIX_REP;
     1900        pCpu->fPrefix &= ~DISPREFIX_REP;
    19011901    }
    19021902    else
     
    21852185    reg   = MODRM_REG(modrm);
    21862186
    2187     if (pCpu->prefix & DISPREFIX_OPSIZE)
     2187    if (pCpu->fPrefix & DISPREFIX_OPSIZE)
    21882188        reg += 8;   //2nd table
    21892189
     
    22062206    modrm = disReadByte(pCpu, uCodePtr);
    22072207    reg   = MODRM_REG(modrm);
    2208     if (pCpu->prefix & DISPREFIX_OPSIZE)
     2208    if (pCpu->fPrefix & DISPREFIX_OPSIZE)
    22092209        reg += 8;   //2nd table
    22102210
     
    22282228    modrm = disReadByte(pCpu, uCodePtr);
    22292229    reg   = MODRM_REG(modrm);
    2230     if (pCpu->prefix & DISPREFIX_OPSIZE)
     2230    if (pCpu->fPrefix & DISPREFIX_OPSIZE)
    22312231        reg += 8;   //2nd table
    22322232
     
    23302330    {
    23312331    case OP_PARM_b:
    2332         Assert(idx < (pCpu->prefix & DISPREFIX_REX ? 16U : 8U));
     2332        Assert(idx < (pCpu->fPrefix & DISPREFIX_REX ? 16U : 8U));
    23332333
    23342334        /* AH, BH, CH & DH map to DIL, SIL, EBL & SPL when a rex prefix is present. */
    23352335        /* Intel® 64 and IA-32 Architectures Software Developer’s Manual: 3.4.1.1 */
    2336         if (    (pCpu->prefix & DISPREFIX_REX)
     2336        if (    (pCpu->fPrefix & DISPREFIX_REX)
    23372337            &&  idx >= DISGREG_AH
    23382338            &&  idx <= DISGREG_BH)
     
    23462346
    23472347    case OP_PARM_w:
    2348         Assert(idx < (pCpu->prefix & DISPREFIX_REX ? 16U : 8U));
     2348        Assert(idx < (pCpu->fPrefix & DISPREFIX_REX ? 16U : 8U));
    23492349
    23502350        pParam->fUse |= DISUSE_REG_GEN16;
     
    23532353
    23542354    case OP_PARM_d:
    2355         Assert(idx < (pCpu->prefix & DISPREFIX_REX ? 16U : 8U));
     2355        Assert(idx < (pCpu->fPrefix & DISPREFIX_REX ? 16U : 8U));
    23562356
    23572357        pParam->fUse |= DISUSE_REG_GEN32;
     
    26182618static void disValidateLockSequence(PDISCPUSTATE pCpu)
    26192619{
    2620     Assert(pCpu->prefix & DISPREFIX_LOCK);
     2620    Assert(pCpu->fPrefix & DISPREFIX_LOCK);
    26212621
    26222622    /*
  • trunk/src/VBox/Disassembler/DisasmFormatYasm.cpp

    r41733 r41734  
    392392    if (    pOp->opcode == OP_INVALID
    393393        ||  (   pOp->opcode == OP_ILLUD2
    394              && (pCpu->prefix & DISPREFIX_LOCK)))
     394             && (pCpu->fPrefix & DISPREFIX_LOCK)))
    395395    {
    396396
     
    401401         * Prefixes
    402402         */
    403         if (pCpu->prefix & DISPREFIX_LOCK)
     403        if (pCpu->fPrefix & DISPREFIX_LOCK)
    404404            PUT_SZ("lock ");
    405         if(pCpu->prefix & DISPREFIX_REP)
     405        if(pCpu->fPrefix & DISPREFIX_REP)
    406406            PUT_SZ("rep ");
    407         else if(pCpu->prefix & DISPREFIX_REPNE)
     407        else if(pCpu->fPrefix & DISPREFIX_REPNE)
    408408            PUT_SZ("repne ");
    409409
     
    604604#define PUT_SEGMENT_OVERRIDE() \
    605605        do { \
    606             if (pCpu->prefix & DISPREFIX_SEG) \
     606            if (pCpu->fPrefix & DISPREFIX_SEG) \
    607607                PUT_STR(s_szSegPrefix[pCpu->idxSegPrefix], 3); \
    608608        } while (0)
     
    612612         * Segment prefixing for instructions that doesn't do memory access.
    613613         */
    614         if (    (pCpu->prefix & DISPREFIX_SEG)
     614        if (    (pCpu->fPrefix & DISPREFIX_SEG)
    615615            &&  !DISUSE_IS_EFFECTIVE_ADDR(pCpu->param1.fUse)
    616616            &&  !DISUSE_IS_EFFECTIVE_ADDR(pCpu->param2.fUse)
     
    12911291    {
    12921292        /* no effective address which it may apply to. */
    1293         Assert((pCpu->prefix & DISPREFIX_SEG) || pCpu->mode == DISCPUMODE_64BIT);
     1293        Assert((pCpu->fPrefix & DISPREFIX_SEG) || pCpu->mode == DISCPUMODE_64BIT);
    12941294        if (    !DISUSE_IS_EFFECTIVE_ADDR(pCpu->param1.fUse)
    12951295            &&  !DISUSE_IS_EFFECTIVE_ADDR(pCpu->param2.fUse)
     
    13011301    if (fPrefixes & DISPREFIX_ADDRSIZE)
    13021302    {
    1303         Assert(pCpu->prefix & DISPREFIX_ADDRSIZE);
     1303        Assert(pCpu->fPrefix & DISPREFIX_ADDRSIZE);
    13041304        if (    pCpu->pCurInstr->param3 == OP_PARM_NONE
    13051305            &&  pCpu->pCurInstr->param2 == OP_PARM_NONE
  • trunk/src/VBox/Disassembler/DisasmReg.cpp

    r41732 r41734  
    259259DISDECL(DISSELREG) DISDetectSegReg(PDISCPUSTATE pCpu, PDISOPPARAM pParam)
    260260{
    261     if (pCpu->prefix & DISPREFIX_SEG)
     261    if (pCpu->fPrefix & DISPREFIX_SEG)
    262262        /* Use specified SEG: prefix. */
    263263        return (DISSELREG)pCpu->idxSegPrefix;
     
    280280DISDECL(uint8_t) DISQuerySegPrefixByte(PDISCPUSTATE pCpu)
    281281{
    282     Assert(pCpu->prefix & DISPREFIX_SEG);
     282    Assert(pCpu->fPrefix & DISPREFIX_SEG);
    283283    switch (pCpu->idxSegPrefix)
    284284    {
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette