VirtualBox

Changeset 8364 in vbox for trunk/src


Ignore:
Timestamp:
Apr 24, 2008 2:20:23 PM (17 years ago)
Author:
vboxsync
Message:

Use the right tables

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

Legend:

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

    r8361 r8364  
    117117    unsigned i = 0, prefixbytes;
    118118    unsigned idx, inc;
     119    const OPCODE *paOneByteMap;
    119120#ifdef __L4ENV__
    120121    jmp_buf jumpbuffer;
     
    147148    if (pCpu->mode == CPUMODE_64BIT)
    148149    {
     150        paOneByteMap     = g_aOneByteMapX64;
    149151        pCpu->addrmode   = CPUMODE_64BIT;
    150152        pCpu->opmode     = CPUMODE_32BIT;
     
    152154    else
    153155    {
     156        paOneByteMap     = g_aOneByteMapX86;
    154157        pCpu->addrmode   = pCpu->mode;
    155158        pCpu->opmode     = pCpu->mode;
     
    167170        {
    168171            uint8_t codebyte = DISReadByte(pCpu, pu8Instruction+i);
    169             uint8_t opcode   = g_aOneByteMapX86[codebyte].opcode;
     172            uint8_t opcode   = paOneByteMap[codebyte].opcode;
    170173
    171174            /* Hardcoded assumption about OP_* values!! */
     
    265268            pCpu->opaddr = pu8Instruction + idx + u32EipOffset - prefixbytes;
    266269
    267             if (pCpu->mode == CPUMODE_64BIT)
    268                 inc = ParseInstruction(pu8Instruction + i, &g_aOneByteMapX64[pCpu->opcode], pCpu);
    269             else
    270                 inc = ParseInstruction(pu8Instruction + i, &g_aOneByteMapX86[pCpu->opcode], pCpu);
     270            inc = ParseInstruction(pu8Instruction + i, &paOneByteMap[pCpu->opcode], pCpu);
    271271
    272272            pCpu->opsize = prefixbytes + inc + sizeof(uint8_t);
  • trunk/src/VBox/Disassembler/DisasmCore.cpp

    r8361 r8364  
    251251static int disCoreOne(PDISCPUSTATE pCpu, RTUINTPTR InstructionAddr, unsigned *pcbInstruction)
    252252{
     253    const OPCODE *paOneByteMap;
     254
    253255    /*
    254256     * Parse byte by byte.
     
    259261    if (pCpu->mode == CPUMODE_64BIT)
    260262    {
     263        paOneByteMap     = g_aOneByteMapX64;
    261264        pCpu->addrmode   = CPUMODE_64BIT;
    262265        pCpu->opmode     = CPUMODE_32BIT;
     
    264267    else
    265268    {
     269        paOneByteMap     = g_aOneByteMapX86;
    266270        pCpu->addrmode   = pCpu->mode;
    267271        pCpu->opmode     = pCpu->mode;
     
    270274    while(1)
    271275    {
    272         uint8_t codebyte   = DISReadByte(pCpu, InstructionAddr+iByte);
    273         uint8_t opcode     = g_aOneByteMapX86[codebyte].opcode;
     276        uint8_t codebyte = DISReadByte(pCpu, InstructionAddr+iByte);
     277        uint8_t opcode   = paOneByteMap[codebyte].opcode;
    274278
    275279        /* Hardcoded assumption about OP_* values!! */
     
    360364        pCpu->opcode = codebyte;
    361365
    362         if (pCpu->mode == CPUMODE_64BIT)
    363             cbInc = ParseInstruction(InstructionAddr + iByte, &g_aOneByteMapX64[pCpu->opcode], pCpu);
    364         else
    365             cbInc = ParseInstruction(InstructionAddr + iByte, &g_aOneByteMapX86[pCpu->opcode], pCpu);
    366 
     366        cbInc = ParseInstruction(InstructionAddr + iByte, &paOneByteMap[pCpu->opcode], pCpu);
    367367        iByte += cbInc;
    368368        break;
  • trunk/src/VBox/Disassembler/DisasmReg.cpp

    r8234 r8364  
    521521
    522522            if (pParam->flags & USE_SCALE)
    523             {
    524523                val32 *= pParam->scale;
    525             }
     524
    526525            pParamVal->val.val32 += val32;
    527526        }
     
    530529        {
    531530            if (pCpu->mode & CPUMODE_32BIT)
    532             {
    533531                pParamVal->val.val32 += (int32_t)pParam->disp8;
    534             }
    535532            else
    536             {
    537533                pParamVal->val.val16 += (int16_t)pParam->disp8;
    538             }
    539534        }
    540535        else
     
    542537        {
    543538            if (pCpu->mode & CPUMODE_32BIT)
    544             {
    545539                pParamVal->val.val32 += (int32_t)pParam->disp16;
    546             }
    547540            else
    548             {
    549541                pParamVal->val.val16 += pParam->disp16;
    550             }
    551542        }
    552543        else
     
    554545        {
    555546            if (pCpu->mode & CPUMODE_32BIT)
    556             {
    557547                pParamVal->val.val32 += pParam->disp32;
    558             }
    559548            else
    560             {
    561                 Assert(0);
    562             }
     549                AssertFailed();
    563550        }
    564551        return VINF_SUCCESS;
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