VirtualBox

Ignore:
Timestamp:
Jun 23, 2023 2:15:10 PM (18 months ago)
Author:
vboxsync
Message:

VMM/IEM: Collect opcode bytes while decoding instructions in the recompiler. Started on TB opcode validation prior/during execution (much more work needed). bugref:10369

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r100231 r100266  
    789789    /** The offset of the ModR/M byte relative to the start of the instruction. */
    790790    uint8_t                 offModRm;                                                                       /* 0x34 */
     791
     792#  ifdef IEM_WITH_CODE_TLB_AND_OPCODE_BUF
     793    /** The current offset into abOpcode. */
     794    uint8_t                 offOpcode;                                                                      /* 0x35 */
     795#  else
     796    uint8_t                 bUnused;                                                                        /* 0x35 */
     797#  endif
    791798# else  /* !IEM_WITH_CODE_TLB */
    792799    /** The size of what has currently been fetched into abOpcode. */
     
    813820
    814821    /** The effective operand mode. */
    815     IEMMODE                 enmEffOpSize;                                                                   /* 0x35, 0x13 */
     822    IEMMODE                 enmEffOpSize;                                                                   /* 0x36, 0x13 */
    816823    /** The default addressing mode. */
    817     IEMMODE                 enmDefAddrMode;                                                                 /* 0x36, 0x14 */
     824    IEMMODE                 enmDefAddrMode;                                                                 /* 0x37, 0x14 */
    818825    /** The effective addressing mode. */
    819     IEMMODE                 enmEffAddrMode;                                                                 /* 0x37, 0x15 */
     826    IEMMODE                 enmEffAddrMode;                                                                 /* 0x38, 0x15 */
    820827    /** The default operand mode. */
    821     IEMMODE                 enmDefOpSize;                                                                   /* 0x38, 0x16 */
     828    IEMMODE                 enmDefOpSize;                                                                   /* 0x39, 0x16 */
    822829
    823830    /** Prefix index (VEX.pp) for two byte and three byte tables. */
    824     uint8_t                 idxPrefix;                                                                      /* 0x39, 0x17 */
     831    uint8_t                 idxPrefix;                                                                      /* 0x3a, 0x17 */
    825832    /** 3rd VEX/EVEX/XOP register.
    826833     * Please use IEM_GET_EFFECTIVE_VVVV to access.  */
    827     uint8_t                 uVex3rdReg;                                                                     /* 0x3a, 0x18 */
     834    uint8_t                 uVex3rdReg;                                                                     /* 0x3b, 0x18 */
    828835    /** The VEX/EVEX/XOP length field. */
    829     uint8_t                 uVexLength;                                                                     /* 0x3b, 0x19 */
     836    uint8_t                 uVexLength;                                                                     /* 0x3c, 0x19 */
    830837    /** Additional EVEX stuff. */
    831     uint8_t                 fEvexStuff;                                                                     /* 0x3c, 0x1a */
    832 
     838    uint8_t                 fEvexStuff;                                                                     /* 0x3d, 0x1a */
     839
     840# ifndef IEM_WITH_CODE_TLB
    833841    /** Explicit alignment padding. */
    834     uint8_t                 abAlignment2a[1];                                                               /* 0x3d, 0x1b */
     842    uint8_t                 abAlignment2a[1];                                                               /*       0x1b */
     843# endif
    835844    /** The FPU opcode (FOP). */
    836845    uint16_t                uFpuOpcode;                                                                     /* 0x3e, 0x1c */
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