VirtualBox

Changeset 7000 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Feb 18, 2008 4:49:46 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
28198
Message:

Started with changes for disassembling 64 bits instructions

Location:
trunk/include/VBox
Files:
2 edited

Legend:

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

    r5999 r7000  
    6666/** rep(e) prefix (not a prefix, but we'll treat is as one). */
    6767#define PREFIX_REPNE                    32
     68/** REX prefix (64 bits) */
     69#define PREFIX_REX                      64
     70/** @} */
     71
     72/** 64 bits prefix byte flags
     73 * @{
     74 */
     75#define PREFIX_REX_OP_2_FLAGS(a)        (a - OP_REX)
     76#define PREFIX_REX_FLAGS                PREFIX_REX_OP_2_FLAGS(OP_REX)
     77#define PREFIX_REX_FLAGS_B              PREFIX_REX_OP_2_FLAGS(OP_REX_B)
     78#define PREFIX_REX_FLAGS_X              PREFIX_REX_OP_2_FLAGS(OP_REX_X)
     79#define PREFIX_REX_FLAGS_XB             PREFIX_REX_OP_2_FLAGS(OP_REX_XB)
     80#define PREFIX_REX_FLAGS_R              PREFIX_REX_OP_2_FLAGS(OP_REX_R)
     81#define PREFIX_REX_FLAGS_RB             PREFIX_REX_OP_2_FLAGS(OP_REX_RB)
     82#define PREFIX_REX_FLAGS_RX             PREFIX_REX_OP_2_FLAGS(OP_REX_RX)
     83#define PREFIX_REX_FLAGS_RXB            PREFIX_REX_OP_2_FLAGS(OP_REX_RXB)
     84#define PREFIX_REX_FLAGS_W              PREFIX_REX_OP_2_FLAGS(OP_REX_W)
     85#define PREFIX_REX_FLAGS_WB             PREFIX_REX_OP_2_FLAGS(OP_REX_WB)
     86#define PREFIX_REX_FLAGS_WX             PREFIX_REX_OP_2_FLAGS(OP_REX_WX)
     87#define PREFIX_REX_FLAGS_WXB            PREFIX_REX_OP_2_FLAGS(OP_REX_WXB)
     88#define PREFIX_REX_FLAGS_WR             PREFIX_REX_OP_2_FLAGS(OP_REX_WR)
     89#define PREFIX_REX_FLAGS_WRB            PREFIX_REX_OP_2_FLAGS(OP_REX_WRB)
     90#define PREFIX_REX_FLAGS_WRX            PREFIX_REX_OP_2_FLAGS(OP_REX_WRX)
     91#define PREFIX_REX_FLAGS_WRXB           PREFIX_REX_OP_2_FLAGS(OP_REX_WRXB)
    6892/** @} */
    6993
     
    7195 * Operand type.
    7296 */
    73 #define OPTYPE_INVALID               RT_BIT(0)
    74 #define OPTYPE_HARMLESS              RT_BIT(1)
    75 #define OPTYPE_CONTROLFLOW           RT_BIT(2)
    76 #define OPTYPE_POTENTIALLY_DANGEROUS RT_BIT(3)
    77 #define OPTYPE_DANGEROUS             RT_BIT(4)
    78 #define OPTYPE_PORTIO                RT_BIT(5)
    79 #define OPTYPE_PRIVILEGED            RT_BIT(6)
    80 #define OPTYPE_PRIVILEGED_NOTRAP     RT_BIT(7)
    81 #define OPTYPE_UNCOND_CONTROLFLOW    RT_BIT(8)
    82 #define OPTYPE_RELATIVE_CONTROLFLOW  RT_BIT(9)
    83 #define OPTYPE_COND_CONTROLFLOW      RT_BIT(10)
    84 #define OPTYPE_INTERRUPT             RT_BIT(11)
    85 #define OPTYPE_ILLEGAL               RT_BIT(12)
    86 #define OPTYPE_RRM_DANGEROUS         RT_BIT(14) /**< Some additional dangerouse ones when recompiling raw r0. */
    87 #define OPTYPE_RRM_DANGEROUS_16      RT_BIT(15) /**< Some additional dangerouse ones when recompiling 16-bit raw r0. */
    88 #define OPTYPE_RRM_MASK              (OPTYPE_RRM_DANGEROUS | OPTYPE_RRM_DANGEROUS_16)
    89 #define OPTYPE_INHIBIT_IRQS          RT_BIT(16) /**< Will or can inhibit irqs (sti, pop ss, mov ss) */
    90 #define OPTYPE_PORTIO_READ           RT_BIT(17)
    91 #define OPTYPE_PORTIO_WRITE          RT_BIT(18)
    92 #define OPTYPE_ALL                   (0xffffffff)
     97#define OPTYPE_INVALID                  RT_BIT(0)
     98#define OPTYPE_HARMLESS                 RT_BIT(1)
     99#define OPTYPE_CONTROLFLOW              RT_BIT(2)
     100#define OPTYPE_POTENTIALLY_DANGEROUS    RT_BIT(3)
     101#define OPTYPE_DANGEROUS                RT_BIT(4)
     102#define OPTYPE_PORTIO                   RT_BIT(5)
     103#define OPTYPE_PRIVILEGED               RT_BIT(6)
     104#define OPTYPE_PRIVILEGED_NOTRAP        RT_BIT(7)
     105#define OPTYPE_UNCOND_CONTROLFLOW       RT_BIT(8)
     106#define OPTYPE_RELATIVE_CONTROLFLOW     RT_BIT(9)
     107#define OPTYPE_COND_CONTROLFLOW         RT_BIT(10)
     108#define OPTYPE_INTERRUPT                RT_BIT(11)
     109#define OPTYPE_ILLEGAL                  RT_BIT(12)
     110#define OPTYPE_RRM_DANGEROUS            RT_BIT(14)  /**< Some additional dangerouse ones when recompiling raw r0. */
     111#define OPTYPE_RRM_DANGEROUS_16         RT_BIT(15)  /**< Some additional dangerouse ones when recompiling 16-bit raw r0. */
     112#define OPTYPE_RRM_MASK                 (OPTYPE_RRM_DANGEROUS | OPTYPE_RRM_DANGEROUS_16)
     113#define OPTYPE_INHIBIT_IRQS             RT_BIT(16)  /**< Will or can inhibit irqs (sti, pop ss, mov ss) */
     114#define OPTYPE_PORTIO_READ              RT_BIT(17)
     115#define OPTYPE_PORTIO_WRITE             RT_BIT(18)
     116#define OPTYPE_INVALID_64               RT_BIT(19)  /**< Invalid in 64 bits mode */
     117#define OPTYPE_ONLY_64                  RT_BIT(20)  /**< Only valid in 64 bits mode */
     118#define OPTYPE_DEFAULT_64_OP_SIZE       RT_BIT(21)  /**< Default 64 bits operand size */
     119#define OPTYPE_FORCED_64_OP_SIZE        RT_BIT(22)  /**< Forced 64 bits operand size; regardless of prefix bytes */
     120#define OPTYPE_ALL                      (0xffffffff)
    93121
    94122/** Parameter usage flags.
     
    348376    /** segment prefix value. */
    349377    uint32_t        prefix_seg;
     378    /** rex prefix value (64 bits only */
     379    uint32_t        prefix_rex;
    350380    /** addressing mode (16 or 32 bits). (CPUMODE_*) */
    351381    uint32_t        addrmode;
  • trunk/include/VBox/disopcode.h

    r5999 r7000  
    581581#define OP_MOV_TR       601
    582582
     583
     584/* 64 bits prefix bytes */
     585#define OP_REX          0x40
     586#define OP_REX_B        0x41
     587#define OP_REX_X        0x42
     588#define OP_REX_XB       0x43
     589#define OP_REX_R        0x44
     590#define OP_REX_RB       0x45
     591#define OP_REX_RX       0x46
     592#define OP_REX_RXB      0x47
     593#define OP_REX_W        0x48
     594#define OP_REX_WB       0x49
     595#define OP_REX_WX       0x4A
     596#define OP_REX_WXB      0x4B
     597#define OP_REX_WR       0x4C
     598#define OP_REX_WRB      0x4D
     599#define OP_REX_WRX      0x4E
     600#define OP_REX_WRXB     0x4F
     601
    583602/** @} */
    584603
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