VirtualBox

Changeset 1079 in vbox for trunk


Ignore:
Timestamp:
Feb 28, 2007 8:25:33 AM (18 years ago)
Author:
vboxsync
Message:

Corrected parameter parsing for LDS, LES, LFS, LGS and LSS instructions

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

Legend:

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

    r1 r1079  
    24842484
    24852485    case OP_PARM_p:
    2486         if(pCpu->addrmode == CPUMODE_32BIT)
    2487         {
    2488             disasmAddString(pParam->szParam, "far ptr ");
    2489         }
    2490         else
    2491         {
    2492             disasmAddString(pParam->szParam, "near ptr ");
    2493         }
    2494         break;
    2495 
     2486        disasmAddString(pParam->szParam, "far ptr ");
     2487        break;
    24962488
    24972489    case OP_PARM_s:
  • trunk/src/VBox/Disassembler/DisasmTables.cpp

    r1 r1079  
    303303
    304304    /* C */
    305     OP("Shift Grp2 %Eb,%Ib", IDX_ParseShiftGrp2, 0,          0,          OP_SHIFT_GRP2, OP_PARM_Eb,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    306     OP("Shift Grp2 %Ev,%Ib", IDX_ParseShiftGrp2, 0,          0,          OP_SHIFT_GRP2, OP_PARM_Ev,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    307     OP("retn %Iw",           IDX_ParseImmUshort, 0,          0,          OP_RETN,    OP_PARM_Iw,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
    308     OP("retn",               0,              0,          0,          OP_RETN,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
    309     OP("les %Gv,%Mp",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_LES,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    310     OP("lds %Gv,%Mp",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_LDS,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_RRM_DANGEROUS),
    311     OP("mov %Eb,%Ib",        IDX_ParseModRM,     IDX_ParseImmByte,0,         OP_MOV,     OP_PARM_Eb,         OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    312     OP("mov %Ev,%Iv",        IDX_ParseModRM,     IDX_ParseImmV,  0,          OP_MOV,     OP_PARM_Ev,         OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    313     OP("enter %Iw,%Ib",      IDX_ParseImmUshort, IDX_ParseImmByte,0,         OP_ENTER,   OP_PARM_Iw,         OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    314     OP("leave",              0,              0,          0,          OP_LEAVE,   OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
    315     OP("retf %Iw",           IDX_ParseImmUshort, 0,          0,          OP_RETF,    OP_PARM_Iw,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
    316     OP("retf",               0,              0,          0,          OP_RETF,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
    317     OP("int 3",              0,              0,          0,          OP_INT3,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INTERRUPT),
    318     OP("int %Ib",            IDX_ParseImmByte,   0,          0,          OP_INT,     OP_PARM_Ib,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INTERRUPT),
    319     OP("into",               0,              0,          0,          OP_INTO,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INTERRUPT),
    320     OP("iret",               0,              0,          0,          OP_IRET,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
     305    OP("Shift Grp2 %Eb,%Ib", IDX_ParseShiftGrp2, 0,          0,             OP_SHIFT_GRP2, OP_PARM_Eb,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     306    OP("Shift Grp2 %Ev,%Ib", IDX_ParseShiftGrp2, 0,          0,             OP_SHIFT_GRP2, OP_PARM_Ev,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     307    OP("retn %Iw",           IDX_ParseImmUshort, 0,          0,             OP_RETN,     OP_PARM_Iw,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
     308    OP("retn",               0,                  0,          0,             OP_RETN,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
     309    OP("les %Gv,%Mp",        IDX_ParseModRM,     IDX_ParseImmAddr,          0,           OP_LES,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     310    OP("lds %Gv,%Mp",        IDX_ParseModRM,     IDX_ParseImmAddr,          0,           OP_LDS,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_RRM_DANGEROUS),
     311    OP("mov %Eb,%Ib",        IDX_ParseModRM,     IDX_ParseImmByte,          0,           OP_MOV,     OP_PARM_Eb,         OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     312    OP("mov %Ev,%Iv",        IDX_ParseModRM,     IDX_ParseImmV,             0,           OP_MOV,     OP_PARM_Ev,         OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     313    OP("enter %Iw,%Ib",      IDX_ParseImmUshort, IDX_ParseImmByte,          0,           OP_ENTER,   OP_PARM_Iw,         OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     314    OP("leave",              0,                  0,                         0,           OP_LEAVE,   OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
     315    OP("retf %Iw",           IDX_ParseImmUshort, 0,                         0,           OP_RETF,    OP_PARM_Iw,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
     316    OP("retf",               0,                  0,                         0,           OP_RETF,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
     317    OP("int 3",              0,                  0,                         0,           OP_INT3,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INTERRUPT),
     318    OP("int %Ib",            IDX_ParseImmByte,   0,                         0,           OP_INT,     OP_PARM_Ib,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INTERRUPT),
     319    OP("into",               0,                  0,                         0,           OP_INTO,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INTERRUPT),
     320    OP("iret",               0,                  0,                         0,           OP_IRET,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
    321321
    322322
     
    591591    OP("cmpxchg %Eb,%Gb",    IDX_ParseModRM,     IDX_UseModRM,   0,          OP_CMPXCHG, OP_PARM_Eb,         OP_PARM_Gb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    592592    OP("cmpxchg %Ev,%Gv",    IDX_ParseModRM,     IDX_UseModRM,   0,          OP_CMPXCHG, OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    593     OP("lss %Gv,%Mp",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_LSS,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_RRM_DANGEROUS),
     593    OP("lss %Gv,%Mp",        IDX_ParseModRM,     IDX_ParseImmAddr,   0,          OP_LSS,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_RRM_DANGEROUS),
    594594    OP("btr %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_BTR,     OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    595     OP("lfs %Gv,%Mp",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_LFS,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    596     OP("lgs %Gv,%Mp",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_LGS,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     595    OP("lfs %Gv,%Mp",        IDX_ParseModRM,     IDX_ParseImmAddr,   0,          OP_LFS,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     596    OP("lgs %Gv,%Mp",        IDX_ParseModRM,     IDX_ParseImmAddr,   0,          OP_LGS,     OP_PARM_Gv,         OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    597597    OP("movzx %Gv,%Eb",      IDX_ParseModRM,     IDX_UseModRM,   0,          OP_MOVZX,   OP_PARM_Gv,         OP_PARM_Eb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
    598598    OP("movzx %Gv,%Ew",      IDX_ParseModRM,     IDX_UseModRM,   0,          OP_MOVZX,   OP_PARM_Gv,         OP_PARM_Ew,     OP_PARM_NONE,   OPTYPE_HARMLESS),
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