VirtualBox

Ignore:
Timestamp:
May 26, 2008 4:02:50 PM (17 years ago)
Author:
vboxsync
Message:

Dropped the USE_EFFICIENT_ADDRESS flag. This breaks assumptions in CSAM about parameter flags.
Instead use DIS_IS_EFFECTIVE_ADDRESS.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Disassembler/testcase/tstDisasm-2.cpp

    r9101 r9131  
    547547         */
    548548        if (    (pCpu->prefix & PREFIX_SEG)
    549             &&  !(pCpu->param1.flags & USE_EFFICIENT_ADDRESS)
    550             &&  !(pCpu->param2.flags & USE_EFFICIENT_ADDRESS)
    551             &&  !(pCpu->param3.flags & USE_EFFICIENT_ADDRESS))
     549            &&  !DIS_IS_EFFECTIVE_ADDR(pCpu->param1.flags)
     550            &&  !DIS_IS_EFFECTIVE_ADDR(pCpu->param2.flags)
     551            &&  !DIS_IS_EFFECTIVE_ADDR(pCpu->param3.flags))
    552552        {
    553553            PUT_STR(s_szSegPrefix[pCpu->prefix_seg], 2);
     
    600600
    601601                        PUT_FAR();
    602                         if (pParam->flags & USE_EFFICIENT_ADDRESS)
     602                        if (DIS_IS_EFFECTIVE_ADDR(pParam->flags))
    603603                        {
    604604                            /* Work around mov seg,[mem16]  and mov [mem16],seg as these always make a 16-bit mem
     
    623623                                PUT_SZ("dword ");
    624624                        }
    625                         if (pParam->flags & USE_EFFICIENT_ADDRESS)
     625                        if (DIS_IS_EFFECTIVE_ADDR(pParam->flags))
    626626                            PUT_SEGMENT_OVERRIDE();
    627627
    628628                        bool fBase =  (pParam->flags & USE_BASE) /* When exactly is USE_BASE supposed to be set? disasmModRMReg doesn't set it. */
    629629                                   || (   (pParam->flags & (USE_REG_GEN8 | USE_REG_GEN16 | USE_REG_GEN32 | USE_REG_GEN64))
    630                                        && !(pParam->flags & USE_EFFICIENT_ADDRESS));
     630                                       && !DIS_IS_EFFECTIVE_ADDR(pParam->flags));
    631631                        if (fBase)
    632632                        {
     
    683683                        }
    684684
    685                         if (pParam->flags & USE_EFFICIENT_ADDRESS)
     685                        if (DIS_IS_EFFECTIVE_ADDR(pParam->flags))
    686686                            PUT_C(']');
    687687                        break;
     
    10681068    if (fPrefixes & PREFIX_SEG)
    10691069    {
    1070         /* no efficient address which it may apply to. */
     1070        /* no effective address which it may apply to. */
    10711071        Assert((pState->Cpu.prefix & PREFIX_SEG) || pState->Cpu.mode == CPUMODE_64BIT);
    1072         if (    !(pState->Cpu.param1.flags & USE_EFFICIENT_ADDRESS)
    1073             &&  !(pState->Cpu.param2.flags & USE_EFFICIENT_ADDRESS)
    1074             &&  !(pState->Cpu.param3.flags & USE_EFFICIENT_ADDRESS))
     1072        if (    !DIS_IS_EFFECTIVE_ADDR(pState->Cpu.param1.flags)
     1073            &&  !DIS_IS_EFFECTIVE_ADDR(pState->Cpu.param2.flags)
     1074            &&  !DIS_IS_EFFECTIVE_ADDR(pState->Cpu.param3.flags))
    10751075            return true;
    10761076    }
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