VirtualBox

Ignore:
Timestamp:
Feb 22, 2024 1:17:13 AM (15 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
161855
Message:

DIS: Added vex group 13 and redid some or the vex prefix decoding.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/dis-x86-amd64.h

    r101539 r103512  
    6464/** rep(e) prefix (not a prefix, but we'll treat is as one). */
    6565#define DISPREFIX_REP                   UINT8_C(0x10)
    66 /** rep(e) prefix (not a prefix, but we'll treat is as one). */
     66/** repne prefix (not a prefix, but we'll treat is as one). */
    6767#define DISPREFIX_REPNE                 UINT8_C(0x20)
    6868/** REX prefix (64 bits) */
    6969#define DISPREFIX_REX                   UINT8_C(0x40)
     70/** VEX or EVEX prefix (64 bits) */
     71#define DISPREFIX_VEX                   UINT8_C(0x80)
    7072/** @} */
    7173
    7274/** @name VEX.Lvvvv prefix destination register flag.
    73  *  @{
     75 * @todo r=bird: redo this. See comments elsewhere.
     76 * @{
    7477 */
    7578#define VEX_LEN256                      UINT8_C(0x01)
     
    7881#define VEX_2B2INT(x)                   ((((x) >> 2) & 0x1f))
    7982#define VEX_HAS_REX_R(x)                  (!((x) & 0x80))
    80 
    8183#define DISPREFIX_VEX_FLAG_W            UINT8_C(0x01)
     84/** @} */
     85
     86/** @name DISPREFIX_VEX_F_XXX - The bVexStuff definitions
     87 * @note This is the same layout as byte2 in the VEX3 prefix.
     88 * @{ */
     89/** The VEX prefix mask.   */
     90#define DISPREFIX_VEX_F_PP_MASK         UINT8_C(0x03)
     91/** No prefix.   */
     92#define DISPREFIX_VEX_F_PP_NONE         UINT8_C(0x00)
     93/** 66h/opsize prefix.   */
     94#define DISPREFIX_VEX_F_PP_66           UINT8_C(0x01)
     95/** f3h/repe prefix.   */
     96#define DISPREFIX_VEX_F_PP_F3           UINT8_C(0x02)
     97/** f2h/repne prefix.   */
     98#define DISPREFIX_VEX_F_PP_F2           UINT8_C(0x03)
     99/** The VEX.L flag. */
     100#define DISPREFIX_VEX_F_L               UINT8_C(0x04)
     101/** The VEX.VVVV mask. */
     102#define DISPREFIX_VEX_F_VVVV            UINT8_C(0x78)
     103/** The VEX.VVVV shift count. */
     104#define DISPREFIX_VEX_F_VVVV_SHIFT      3
     105/** The VEX.VVVV mask shifted down to bit 0. */
     106#define DISPREFIX_VEX_F_VVVV_SMASK      UINT8_C(0x0f)
     107/** The VEX.W flag. */
     108#define DISPREFIX_VEX_F_W               UINT8_C(0x80)
    82109 /** @} */
    83110
     
    439466    uint8_t         cbPrefix;
    440467    /** VEX presence flag, destination register and size
    441      * @todo r=bird: There is no VEX presence flage here, just ~vvvv and L.  */
     468     * @todo r=bird: There is no VEX presence flage here, just ~vvvv and L.
     469     * @deprecated DO NOT USE. All info is available in bVexByte2 and
     470     *             fPrefix/DISPREFIX_VEX. */
    442471    uint8_t         bVexDestReg;
    443     /** VEX.W flag */
    444     uint8_t         bVexWFlag;
     472    /** DISPREFIX_VEX_F_XXX - This is set for both VEX prefixes. */
     473    uint8_t         bVexByte2;
    445474    /** Internal: instruction filter */
    446475    uint32_t        fFilter;
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