VirtualBox

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


Ignore:
Timestamp:
Jun 12, 2012 8:40:22 AM (12 years ago)
Author:
vboxsync
Message:

DIS,EM,PGM,PATM: Changed the size and scale members of OP_PARAMETER from uint32_t to uint8_t, saving 4 more bytes.

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

Legend:

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

    r41662 r41663  
    394394    {
    395395        size += pCpu->pfnDisasmFnTable[pOp->idxParse1](lpszCodeBlock, pOp, &pCpu->param1, pCpu);
    396         if (fFiltered == false) pCpu->param1.size = DISGetParamSize(pCpu, &pCpu->param1);
     396        if (fFiltered == false) pCpu->param1.cb = DISGetParamSize(pCpu, &pCpu->param1);
    397397    }
    398398
     
    400400    {
    401401        size += pCpu->pfnDisasmFnTable[pOp->idxParse2](lpszCodeBlock+size, pOp, &pCpu->param2, pCpu);
    402         if (fFiltered == false) pCpu->param2.size = DISGetParamSize(pCpu, &pCpu->param2);
     402        if (fFiltered == false) pCpu->param2.cb = DISGetParamSize(pCpu, &pCpu->param2);
    403403    }
    404404
     
    406406    {
    407407        size += pCpu->pfnDisasmFnTable[pOp->idxParse3](lpszCodeBlock+size, pOp, &pCpu->param3, pCpu);
    408         if (fFiltered == false) pCpu->param3.size = DISGetParamSize(pCpu, &pCpu->param3);
     408        if (fFiltered == false) pCpu->param3.cb = DISGetParamSize(pCpu, &pCpu->param3);
    409409    }
    410410    // else simple one byte instruction
     
    11411141    pParam->parval = DISReadByte(pCpu, lpszCodeBlock);
    11421142    pParam->flags |= USE_IMMEDIATE8;
    1143     pParam->size   = sizeof(uint8_t);
     1143    pParam->cb     = sizeof(uint8_t);
    11441144
    11451145    disasmAddStringF1(pParam->szParam, "0%02Xh", (uint32_t)pParam->parval);
     
    11621162        pParam->parval = (uint32_t)(int8_t)DISReadByte(pCpu, lpszCodeBlock);
    11631163        pParam->flags |= USE_IMMEDIATE32_SX8;
    1164         pParam->size   = sizeof(uint32_t);
     1164        pParam->cb     = sizeof(uint32_t);
    11651165        disasmAddStringF1(pParam->szParam, "0%08Xh", (uint32_t)pParam->parval);
    11661166    }
     
    11701170        pParam->parval = (uint64_t)(int8_t)DISReadByte(pCpu, lpszCodeBlock);
    11711171        pParam->flags |= USE_IMMEDIATE64_SX8;
    1172         pParam->size   = sizeof(uint64_t);
     1172        pParam->cb     = sizeof(uint64_t);
    11731173        disasmAddStringF1(pParam->szParam, "0%016RX64h", pParam->parval);
    11741174    }
     
    11771177        pParam->parval = (uint16_t)(int8_t)DISReadByte(pCpu, lpszCodeBlock);
    11781178        pParam->flags |= USE_IMMEDIATE16_SX8;
    1179         pParam->size   = sizeof(uint16_t);
     1179        pParam->cb     = sizeof(uint16_t);
    11801180        disasmAddStringF1(pParam->szParam, "0%04Xh", (uint16_t)pParam->parval);
    11811181    }
     
    11961196    pParam->parval = DISReadWord(pCpu, lpszCodeBlock);
    11971197    pParam->flags |= USE_IMMEDIATE16;
    1198     pParam->size   = sizeof(uint16_t);
     1198    pParam->cb     = sizeof(uint16_t);
    11991199
    12001200    disasmAddStringF1(pParam->szParam, "0%04Xh", (uint16_t)pParam->parval);
     
    12151215    pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
    12161216    pParam->flags |= USE_IMMEDIATE32;
    1217     pParam->size   = sizeof(uint32_t);
     1217    pParam->cb     = sizeof(uint32_t);
    12181218
    12191219    disasmAddStringF1(pParam->szParam, "0%08Xh", (uint32_t)pParam->parval);
     
    12341234    pParam->parval = DISReadQWord(pCpu, lpszCodeBlock);
    12351235    pParam->flags |= USE_IMMEDIATE64;
    1236     pParam->size   = sizeof(uint64_t);
     1236    pParam->cb     = sizeof(uint64_t);
    12371237
    12381238    disasmAddStringF2(pParam->szParam, "0%08X%08Xh",
     
    12561256        pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
    12571257        pParam->flags |= USE_IMMEDIATE32;
    1258         pParam->size   = sizeof(uint32_t);
     1258        pParam->cb     = sizeof(uint32_t);
    12591259
    12601260        disasmAddStringF1(pParam->szParam, "0%08Xh", (uint32_t)pParam->parval);
     
    12661266        pParam->parval = DISReadQWord(pCpu, lpszCodeBlock);
    12671267        pParam->flags |= USE_IMMEDIATE64;
    1268         pParam->size   = sizeof(uint64_t);
     1268        pParam->cb     = sizeof(uint64_t);
    12691269
    12701270        disasmAddStringF1(pParam->szParam, "0%RX64h", pParam->parval);
     
    12751275        pParam->parval = DISReadWord(pCpu, lpszCodeBlock);
    12761276        pParam->flags |= USE_IMMEDIATE16;
    1277         pParam->size   = sizeof(uint16_t);
     1277        pParam->cb     = sizeof(uint16_t);
    12781278
    12791279        disasmAddStringF1(pParam->szParam, "0%04Xh", (uint32_t)pParam->parval);
     
    13021302        pParam->parval = DISReadWord(pCpu, lpszCodeBlock);
    13031303        pParam->flags |= USE_IMMEDIATE16;
    1304         pParam->size   = sizeof(uint16_t);
     1304        pParam->cb     = sizeof(uint16_t);
    13051305
    13061306        disasmAddStringF1(pParam->szParam, "0%04Xh", (uint32_t)pParam->parval);
     
    13141314            pParam->parval = (uint64_t)(int32_t)DISReadDWord(pCpu, lpszCodeBlock);
    13151315            pParam->flags |= USE_IMMEDIATE64;
    1316             pParam->size   = sizeof(uint64_t);
     1316            pParam->cb     = sizeof(uint64_t);
    13171317            disasmAddStringF1(pParam->szParam, "0%RX64h", pParam->parval);
    13181318        }
     
    13211321            pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
    13221322            pParam->flags |= USE_IMMEDIATE32;
    1323             pParam->size   = sizeof(uint32_t);
     1323            pParam->cb     = sizeof(uint32_t);
    13241324            disasmAddStringF1(pParam->szParam, "0%08Xh", (uint32_t)pParam->parval);
    13251325        }
     
    13461346    pParam->parval = DISReadByte(pCpu, lpszCodeBlock);
    13471347    pParam->flags |= USE_IMMEDIATE8_REL;
    1348     pParam->size   = sizeof(uint8_t);
     1348    pParam->cb     = sizeof(uint8_t);
    13491349
    13501350    disasmAddStringF1(pParam->szParam, " (0%02Xh)", (uint32_t)pParam->parval);
     
    13691369        pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
    13701370        pParam->flags |= USE_IMMEDIATE32_REL;
    1371         pParam->size   = sizeof(int32_t);
     1371        pParam->cb     = sizeof(int32_t);
    13721372
    13731373        disasmAddStringF1(pParam->szParam, " (0%08Xh)", (uint32_t)pParam->parval);
     
    13801380        pParam->parval = (uint64_t)(int32_t)DISReadDWord(pCpu, lpszCodeBlock);
    13811381        pParam->flags |= USE_IMMEDIATE64_REL;
    1382         pParam->size   = sizeof(int64_t);
     1382        pParam->cb     = sizeof(int64_t);
    13831383
    13841384        disasmAddStringF1(pParam->szParam, " (0%RX64h)", pParam->parval);
     
    13891389        pParam->parval = DISReadWord(pCpu, lpszCodeBlock);
    13901390        pParam->flags |= USE_IMMEDIATE16_REL;
    1391         pParam->size   = sizeof(int16_t);
     1391        pParam->cb     = sizeof(int16_t);
    13921392
    13931393        disasmAddStringF1(pParam->szParam, " (0%04Xh)", (uint32_t)pParam->parval);
     
    14181418            *((uint32_t*)&pParam->parval+1) = DISReadWord(pCpu, lpszCodeBlock+sizeof(uint32_t));
    14191419            pParam->flags  |= USE_IMMEDIATE_ADDR_16_32;
    1420             pParam->size   = sizeof(uint16_t) + sizeof(uint32_t);
     1420            pParam->cb     = sizeof(uint16_t) + sizeof(uint32_t);
    14211421
    14221422            disasmAddStringF2(pParam->szParam, "0%04X:0%08Xh", (uint32_t)(pParam->parval>>32), (uint32_t)pParam->parval);
     
    14311431            pParam->uDisp.i32 = DISReadDWord(pCpu, lpszCodeBlock);
    14321432            pParam->flags |= USE_DISPLACEMENT32;
    1433             pParam->size   = sizeof(uint32_t);
     1433            pParam->cb     = sizeof(uint32_t);
    14341434
    14351435            disasmAddStringF1(pParam->szParam, "[0%08Xh]", pParam->uDisp.i32);
     
    14481448        pParam->uDisp.i64 = DISReadQWord(pCpu, lpszCodeBlock);
    14491449        pParam->flags |= USE_DISPLACEMENT64;
    1450         pParam->size   = sizeof(uint64_t);
     1450        pParam->cb     = sizeof(uint64_t);
    14511451
    14521452        disasmAddStringF2(pParam->szParam, "[0%08X%08Xh]", (uint32_t)(pParam->uDisp.i64 >> 32), (uint32_t)pParam->uDisp.i64);
     
    14591459            pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
    14601460            pParam->flags |= USE_IMMEDIATE_ADDR_16_16;
    1461             pParam->size   = 2*sizeof(uint16_t);
     1461            pParam->cb     = 2*sizeof(uint16_t);
    14621462
    14631463            disasmAddStringF2(pParam->szParam, "0%04X:0%04Xh", (uint32_t)(pParam->parval>>16), (uint16_t)pParam->parval );
     
    14721472            pParam->uDisp.i16 = DISReadWord(pCpu, lpszCodeBlock);
    14731473            pParam->flags |= USE_DISPLACEMENT16;
    1474             pParam->size   = sizeof(uint16_t);
     1474            pParam->cb     = sizeof(uint16_t);
    14751475
    14761476            disasmAddStringF1(pParam->szParam, "[0%04Xh]", (uint32_t)pParam->uDisp.i16);
     
    15261526        *((uint32_t*)&pParam->parval+1) = DISReadWord(pCpu, lpszCodeBlock+sizeof(uint32_t));
    15271527        pParam->flags  |= USE_IMMEDIATE_ADDR_16_32;
    1528         pParam->size   = sizeof(uint16_t) + sizeof(uint32_t);
     1528        pParam->cb     = sizeof(uint16_t) + sizeof(uint32_t);
    15291529
    15301530        disasmAddStringF2(pParam->szParam, "0%04X:0%08Xh", (uint32_t)(pParam->parval>>32), (uint32_t)pParam->parval);
     
    15361536        pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
    15371537        pParam->flags |= USE_IMMEDIATE_ADDR_16_16;
    1538         pParam->size   = 2*sizeof(uint16_t);
     1538        pParam->cb     = 2*sizeof(uint16_t);
    15391539
    15401540        disasmAddStringF2(pParam->szParam, "0%04X:0%04Xh", (uint32_t)(pParam->parval>>16), (uint16_t)pParam->parval );
     
    15901590            pParam->base.reg_gen = pParam->param - OP_PARM_REG_GEN32_START;
    15911591            pParam->flags |= USE_REG_GEN32;
    1592             pParam->size   = 4;
     1592            pParam->cb     = 4;
    15931593        }
    15941594        else
     
    16041604
    16051605            pParam->flags |= USE_REG_GEN64;
    1606             pParam->size   = 8;
     1606            pParam->cb     = 8;
    16071607        }
    16081608        else
     
    16111611            pParam->base.reg_gen = pParam->param - OP_PARM_REG_GEN32_START;
    16121612            pParam->flags |= USE_REG_GEN16;
    1613             pParam->size   = 2;
     1613            pParam->cb     = 2;
    16141614            pParam->param = pParam->param - OP_PARM_REG_GEN32_START + OP_PARM_REG_GEN16_START;
    16151615        }
     
    16211621        pParam->base.reg_seg = (DIS_SELREG)(pParam->param - OP_PARM_REG_SEG_START);
    16221622        pParam->flags |= USE_REG_SEG;
    1623         pParam->size   = 2;
     1623        pParam->cb     = 2;
    16241624    }
    16251625    else
     
    16291629        pParam->base.reg_gen = pParam->param - OP_PARM_REG_GEN16_START;
    16301630        pParam->flags |= USE_REG_GEN16;
    1631         pParam->size   = 2;
     1631        pParam->cb     = 2;
    16321632    }
    16331633    else
     
    16371637        pParam->base.reg_gen = pParam->param - OP_PARM_REG_GEN8_START;
    16381638        pParam->flags |= USE_REG_GEN8;
    1639         pParam->size   = 1;
     1639        pParam->cb     = 1;
    16401640
    16411641        if (pCpu->opmode == CPUMODE_64BIT)
     
    16541654        pParam->base.reg_fp = pParam->param - OP_PARM_REG_FP_START;
    16551655        pParam->flags |= USE_REG_FP;
    1656         pParam->size   = 10;
     1656        pParam->cb     = 10;
    16571657    }
    16581658    Assert(!(pParam->param >= OP_PARM_REG_GEN64_START && pParam->param <= OP_PARM_REG_GEN64_END));
  • trunk/src/VBox/Disassembler/DisasmReg.cpp

    r41662 r41663  
    260260
    261261    default:
    262         if (pParam->size)
    263             return pParam->size;
     262        if (pParam->cb)
     263            return pParam->cb;
    264264        else //@todo dangerous!!!
    265265            return 4;
     
    523523        // Effective address
    524524        pParamVal->type = PARMTYPE_ADDRESS;
    525         pParamVal->size = pParam->size;
     525        pParamVal->size = pParam->cb;
    526526
    527527        if (pParam->flags & USE_BASE)
     
    651651            // Caller needs to interpret the register according to the instruction (source/target, special value etc)
    652652            pParamVal->type = PARMTYPE_REGISTER;
    653             pParamVal->size = pParam->size;
     653            pParamVal->size = pParam->cb;
    654654            return VINF_SUCCESS;
    655655        }
     
    700700        {
    701701            pParamVal->flags |= PARAM_VAL8;
    702             if (pParam->size == 2)
     702            if (pParam->cb == 2)
    703703            {
    704704                pParamVal->size   = sizeof(uint16_t);
     
    717717            pParamVal->size   = sizeof(uint16_t);
    718718            pParamVal->val.val16 = (uint16_t)pParam->parval;
    719             AssertMsg(pParamVal->size == pParam->size || ((pParam->size == 1) && (pParam->flags & USE_IMMEDIATE16_SX8)), ("pParamVal->size %d vs %d EIP=%RX32\n", pParamVal->size, pParam->size, pCtx->eip) );
     719            AssertMsg(pParamVal->size == pParam->cb || ((pParam->cb == 1) && (pParam->flags & USE_IMMEDIATE16_SX8)), ("pParamVal->size %d vs %d EIP=%RX32\n", pParamVal->size, pParam->cb, pCtx->eip) );
    720720        }
    721721        else
     
    725725            pParamVal->size   = sizeof(uint32_t);
    726726            pParamVal->val.val32 = (uint32_t)pParam->parval;
    727             Assert(pParamVal->size == pParam->size || ((pParam->size == 1) && (pParam->flags & USE_IMMEDIATE32_SX8)) );
     727            Assert(pParamVal->size == pParam->cb || ((pParam->cb == 1) && (pParam->flags & USE_IMMEDIATE32_SX8)) );
    728728        }
    729729        else
     
    733733            pParamVal->size   = sizeof(uint64_t);
    734734            pParamVal->val.val64 = pParam->parval;
    735             Assert(pParamVal->size == pParam->size || ((pParam->size == 1) && (pParam->flags & USE_IMMEDIATE64_SX8)) );
     735            Assert(pParamVal->size == pParam->cb || ((pParam->cb == 1) && (pParam->flags & USE_IMMEDIATE64_SX8)) );
    736736        }
    737737        else
     
    742742            pParamVal->val.farptr.sel    = (uint16_t)RT_LOWORD(pParam->parval >> 16);
    743743            pParamVal->val.farptr.offset = (uint32_t)RT_LOWORD(pParam->parval);
    744             Assert(pParamVal->size == pParam->size);
     744            Assert(pParamVal->size == pParam->cb);
    745745        }
    746746        else
     
    751751            pParamVal->val.farptr.sel    = (uint16_t)RT_LOWORD(pParam->parval >> 32);
    752752            pParamVal->val.farptr.offset = (uint32_t)(pParam->parval & 0xFFFFFFFF);
    753             Assert(pParam->size == 8);
     753            Assert(pParam->cb == 8);
    754754        }
    755755    }
Note: See TracChangeset for help on using the changeset viewer.

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