VirtualBox

Changeset 53094 in vbox for trunk/include/VBox/dis.h


Ignore:
Timestamp:
Oct 20, 2014 4:04:09 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
96613
Message:

DIS: #6251: AVX / VEX instructions support (two byte instructions only) and some fixes to the other tables.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/dis.h

    r47412 r53094  
    5454#define DISPREFIX_REX                   UINT8_C(0x40)
    5555/** @} */
     56
     57/** @name VEX.Lvvvv prefix destination register flag.
     58 *  @{
     59 */
     60#define VEX_LEN256                      UINT8_C(0x01)
     61#define VEXREG_IS256B(x)                   ((x) & VEX_LEN256)
     62/* Convert second byte of VEX prefix to internal format */
     63#define VEX_2B2INT(x)                   ((((x) >> 2) & 0x1f))
     64#define VEX_HAS_REX_R(x)                  (!((x) & 0x80))
     65 /** @} */
    5666
    5767/** @name 64 bits prefix byte flags (DISSTATE::fRexPrefix).
     
    130140#define DISUSE_REG_MMX                     RT_BIT_64(8)
    131141#define DISUSE_REG_XMM                     RT_BIT_64(9)
    132 #define DISUSE_REG_CR                      RT_BIT_64(10)
    133 #define DISUSE_REG_DBG                     RT_BIT_64(11)
    134 #define DISUSE_REG_SEG                     RT_BIT_64(12)
    135 #define DISUSE_REG_TEST                    RT_BIT_64(13)
    136 #define DISUSE_DISPLACEMENT8               RT_BIT_64(14)
    137 #define DISUSE_DISPLACEMENT16              RT_BIT_64(15)
    138 #define DISUSE_DISPLACEMENT32              RT_BIT_64(16)
    139 #define DISUSE_DISPLACEMENT64              RT_BIT_64(17)
    140 #define DISUSE_RIPDISPLACEMENT32           RT_BIT_64(18)
    141 #define DISUSE_IMMEDIATE8                  RT_BIT_64(19)
    142 #define DISUSE_IMMEDIATE8_REL              RT_BIT_64(20)
    143 #define DISUSE_IMMEDIATE16                 RT_BIT_64(21)
    144 #define DISUSE_IMMEDIATE16_REL             RT_BIT_64(22)
    145 #define DISUSE_IMMEDIATE32                 RT_BIT_64(23)
    146 #define DISUSE_IMMEDIATE32_REL             RT_BIT_64(24)
    147 #define DISUSE_IMMEDIATE64                 RT_BIT_64(25)
    148 #define DISUSE_IMMEDIATE64_REL             RT_BIT_64(26)
    149 #define DISUSE_IMMEDIATE_ADDR_0_32         RT_BIT_64(27)
    150 #define DISUSE_IMMEDIATE_ADDR_16_32        RT_BIT_64(28)
    151 #define DISUSE_IMMEDIATE_ADDR_0_16         RT_BIT_64(29)
    152 #define DISUSE_IMMEDIATE_ADDR_16_16        RT_BIT_64(30)
     142#define DISUSE_REG_YMM                     RT_BIT_64(10)
     143#define DISUSE_REG_CR                      RT_BIT_64(11)
     144#define DISUSE_REG_DBG                     RT_BIT_64(12)
     145#define DISUSE_REG_SEG                     RT_BIT_64(13)
     146#define DISUSE_REG_TEST                    RT_BIT_64(14)
     147#define DISUSE_DISPLACEMENT8               RT_BIT_64(15)
     148#define DISUSE_DISPLACEMENT16              RT_BIT_64(16)
     149#define DISUSE_DISPLACEMENT32              RT_BIT_64(17)
     150#define DISUSE_DISPLACEMENT64              RT_BIT_64(18)
     151#define DISUSE_RIPDISPLACEMENT32           RT_BIT_64(19)
     152#define DISUSE_IMMEDIATE8                  RT_BIT_64(20)
     153#define DISUSE_IMMEDIATE8_REL              RT_BIT_64(21)
     154#define DISUSE_IMMEDIATE16                 RT_BIT_64(22)
     155#define DISUSE_IMMEDIATE16_REL             RT_BIT_64(23)
     156#define DISUSE_IMMEDIATE32                 RT_BIT_64(24)
     157#define DISUSE_IMMEDIATE32_REL             RT_BIT_64(25)
     158#define DISUSE_IMMEDIATE64                 RT_BIT_64(26)
     159#define DISUSE_IMMEDIATE64_REL             RT_BIT_64(27)
     160#define DISUSE_IMMEDIATE_ADDR_0_32         RT_BIT_64(28)
     161#define DISUSE_IMMEDIATE_ADDR_16_32        RT_BIT_64(29)
     162#define DISUSE_IMMEDIATE_ADDR_0_16         RT_BIT_64(30)
     163#define DISUSE_IMMEDIATE_ADDR_16_16        RT_BIT_64(31)
    153164/** DS:ESI */
    154 #define DISUSE_POINTER_DS_BASED            RT_BIT_64(31)
     165#define DISUSE_POINTER_DS_BASED            RT_BIT_64(32)
    155166/** ES:EDI */
    156 #define DISUSE_POINTER_ES_BASED            RT_BIT_64(32)
    157 #define DISUSE_IMMEDIATE16_SX8             RT_BIT_64(33)
    158 #define DISUSE_IMMEDIATE32_SX8             RT_BIT_64(34)
     167#define DISUSE_POINTER_ES_BASED            RT_BIT_64(33)
     168#define DISUSE_IMMEDIATE16_SX8             RT_BIT_64(34)
     169#define DISUSE_IMMEDIATE32_SX8             RT_BIT_64(35)
    159170#define DISUSE_IMMEDIATE64_SX8             RT_BIT_64(36)
    160171
     
    422433         * set in fUse.  1:1 indexes. */
    423434        uint8_t     idxXmmReg;
     435        /** SSE2 register index (DISYREG_XXX), applicable if DISUSE_REG_YMM is
     436         * set in fUse.  1:1 indexes. */
     437        uint8_t     idxYmmReg;
    424438        /** Segment register index (DISSELREG_XXX), applicable if DISUSE_REG_SEG is
    425439         * set in fUse. */
     
    472486    /** Parameter \#3 parser index. */
    473487    uint8_t     idxParse3;
    474     /** Unused padding.  */
    475     uint8_t     uUnused;
     488    /** Parameter \#4 parser index.  */
     489    uint8_t     idxParse4;
    476490    /** The opcode identifier. This DIS specific, @see grp_dis_opcodes and
    477491     * VBox/disopcode.h. */
     
    483497    /** Parameter \#3 info, @see grp_dis_opparam. */
    484498    uint16_t    fParam3;
     499    /** Parameter \#4 info, @see grp_dis_opparam. */
     500    uint16_t    fParam4;
     501    /** padding unused */
     502    uint16_t    uPadding;
    485503    /** Operand type flags, DISOPTYPE_XXX. */
    486504    uint32_t    fOpType;
     
    570588    /** The instruction size. */
    571589    uint8_t         cbInstr;
     590    /** VEX presence flag, destination register and size */
     591    uint8_t         bVexDestReg;
    572592    /** Unused bytes. */
    573     uint8_t         abUnused[3];
     593    uint8_t         abUnused[2];
    574594    /** Internal: instruction filter */
    575595    uint32_t        fFilter;
     
    607627    DISOPPARAM      Param2;
    608628    DISOPPARAM      Param3;
     629    DISOPPARAM      Param4;
    609630} DISSTATE;
    610 AssertCompileSize(DISSTATE, 0xb8);
     631AssertCompileSize(DISSTATE, 0xd8);
    611632
    612633/** @deprecated  Use DISSTATE and change Cpu and DisState to Dis. */
Note: See TracChangeset for help on using the changeset viewer.

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