Changeset 97138 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Oct 13, 2022 3:20:45 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsOneByte.cpp.h
r96933 r97138 2061 2061 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 2062 2062 2063 if (IEM_IS_MODRM_REG_MODE(bRm)) 2064 { 2065 /* 2066 * Register to register. 2067 */ 2068 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2069 IEM_MC_BEGIN(0, 1); 2070 IEM_MC_LOCAL(uint64_t, u64Value); 2071 IEM_MC_FETCH_GREG_U32_SX_U64(u64Value, IEM_GET_MODRM_RM(pVCpu, bRm)); 2072 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm), u64Value); 2073 IEM_MC_ADVANCE_RIP(); 2074 IEM_MC_END(); 2063 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 2064 { 2065 if (IEM_IS_MODRM_REG_MODE(bRm)) 2066 { 2067 /* 2068 * Register to register. 2069 */ 2070 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2071 IEM_MC_BEGIN(0, 1); 2072 IEM_MC_LOCAL(uint64_t, u64Value); 2073 IEM_MC_FETCH_GREG_U32_SX_U64(u64Value, IEM_GET_MODRM_RM(pVCpu, bRm)); 2074 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm), u64Value); 2075 IEM_MC_ADVANCE_RIP(); 2076 IEM_MC_END(); 2077 } 2078 else 2079 { 2080 /* 2081 * We're loading a register from memory. 2082 */ 2083 IEM_MC_BEGIN(0, 2); 2084 IEM_MC_LOCAL(uint64_t, u64Value); 2085 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 2086 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); 2087 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2088 IEM_MC_FETCH_MEM_U32_SX_U64(u64Value, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 2089 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm), u64Value); 2090 IEM_MC_ADVANCE_RIP(); 2091 IEM_MC_END(); 2092 } 2075 2093 } 2076 2094 else 2077 { 2078 /* 2079 * We're loading a register from memory. 2080 */ 2081 IEM_MC_BEGIN(0, 2); 2082 IEM_MC_LOCAL(uint64_t, u64Value); 2083 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 2084 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); 2085 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2086 IEM_MC_FETCH_MEM_U32_SX_U64(u64Value, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 2087 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm), u64Value); 2088 IEM_MC_ADVANCE_RIP(); 2089 IEM_MC_END(); 2090 } 2095 AssertFailedReturn(VERR_IEM_INSTR_NOT_IMPLEMENTED); 2096 2091 2097 return VINF_SUCCESS; 2092 2098 }
Note:
See TracChangeset
for help on using the changeset viewer.