VirtualBox

Changeset 11489 in vbox for trunk/src


Ignore:
Timestamp:
Aug 19, 2008 2:37:44 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
34986
Message:

ImmVRel is 32 bits sign extended to 64 bits in long mode.

File:
1 edited

Legend:

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

    r11464 r11489  
    13881388    if (pCpu->opmode == CPUMODE_64BIT)
    13891389    {
    1390         pParam->parval = DISReadQWord(pCpu, lpszCodeBlock);
     1390        /* 32 bits relative immediate sign extended to 64 bits. */
     1391        pParam->parval = (uint64_t)(int32_t)DISReadDWord(pCpu, lpszCodeBlock);
    13911392        pParam->flags |= USE_IMMEDIATE64_REL;
    1392         pParam->size   = sizeof(int64_t);
     1393        pParam->size   = sizeof(uint64_t);
    13931394
    13941395        disasmAddStringF(pParam->szParam, sizeof(pParam->szParam), " (0%VX64h)", pParam->parval);
    1395         return sizeof(int64_t);
     1396        return sizeof(int32_t);
    13961397    }
    13971398    else
     
    14101411unsigned ParseImmVRel_SizeOnly(RTUINTPTR lpszCodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu)
    14111412{
    1412     if (pCpu->opmode == CPUMODE_32BIT)
    1413         return sizeof(int32_t);
    1414     else
    1415     if (pCpu->opmode == CPUMODE_64BIT)
    1416         return sizeof(int64_t);
    1417     return sizeof(uint16_t);
     1413    if (pCpu->opmode == CPUMODE_16BIT)
     1414        return sizeof(uint16_t);
     1415    /* Both 32 & 64 bits mode use 32 bits relative immediates. */
     1416    return sizeof(int32_t);
    14181417}
    14191418//*****************************************************************************
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