VirtualBox

Changeset 101707 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Nov 2, 2023 12:54:18 AM (16 months ago)
Author:
vboxsync
Message:

VMM/IEM: Use IEM_MC_STORE_GREG_U*_CONST when storing an immediate value. Saves the need to go thru a variable. bugref:10371

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h

    r101516 r101707  
    74147414{
    74157415    uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    7416     IEM_MC_BEGIN(0, 1, 0, 0);
    7417     IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    7418     IEM_MC_LOCAL_CONST(uint8_t, u8Value,/*=*/ u8Imm);
    7419     IEM_MC_STORE_GREG_U8(iFixedReg, u8Value);
     7416    IEM_MC_BEGIN(0, 0, 0, 0);
     7417    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     7418    IEM_MC_STORE_GREG_U8_CONST(iFixedReg, u8Imm);
    74207419    IEM_MC_ADVANCE_RIP_AND_FINISH();
    74217420    IEM_MC_END();
     
    75117510    {
    75127511        case IEMMODE_16BIT:
    7513             IEM_MC_BEGIN(0, 1, 0, 0);
     7512            IEM_MC_BEGIN(0, 0, 0, 0);
    75147513            uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    75157514            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    7516             IEM_MC_LOCAL_CONST(uint16_t, u16Value,/*=*/ u16Imm);
    7517             IEM_MC_STORE_GREG_U16(iFixedReg, u16Value);
     7515            IEM_MC_STORE_GREG_U16_CONST(iFixedReg, u16Imm);
    75187516            IEM_MC_ADVANCE_RIP_AND_FINISH();
    75197517            IEM_MC_END();
     
    75217519
    75227520        case IEMMODE_32BIT:
    7523             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
     7521            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    75247522            uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    75257523            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    7526             IEM_MC_LOCAL_CONST(uint32_t, u32Value,/*=*/ u32Imm);
    7527             IEM_MC_STORE_GREG_U32(iFixedReg, u32Value);
     7524            IEM_MC_STORE_GREG_U32_CONST(iFixedReg, u32Imm);
    75287525            IEM_MC_ADVANCE_RIP_AND_FINISH();
    75297526            IEM_MC_END();
     
    75347531            uint64_t u64Imm; IEM_OPCODE_GET_NEXT_U64(&u64Imm); /* 64-bit immediate! */
    75357532            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    7536             IEM_MC_LOCAL_CONST(uint64_t, u64Value,/*=*/ u64Imm);
    7537             IEM_MC_STORE_GREG_U64(iFixedReg, u64Value);
     7533            IEM_MC_STORE_GREG_U64_CONST(iFixedReg, u64Imm);
    75387534            IEM_MC_ADVANCE_RIP_AND_FINISH();
    75397535            IEM_MC_END();
     
    80108006        IEM_MC_BEGIN(0, 0, 0, 0);
    80118007        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    8012         IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, bRm), u8Imm);
     8008        IEM_MC_STORE_GREG_U8_CONST(IEM_GET_MODRM_RM(pVCpu, bRm), u8Imm);
    80138009        IEM_MC_ADVANCE_RIP_AND_FINISH();
    80148010        IEM_MC_END();
     
    80488044                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    80498045                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    8050                 IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_RM(pVCpu, bRm), u16Imm);
     8046                IEM_MC_STORE_GREG_U16_CONST(IEM_GET_MODRM_RM(pVCpu, bRm), u16Imm);
    80518047                IEM_MC_ADVANCE_RIP_AND_FINISH();
    80528048                IEM_MC_END();
     
    80578053                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    80588054                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    8059                 IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, bRm), u32Imm);
     8055                IEM_MC_STORE_GREG_U32_CONST(IEM_GET_MODRM_RM(pVCpu, bRm), u32Imm);
    80608056                IEM_MC_ADVANCE_RIP_AND_FINISH();
    80618057                IEM_MC_END();
     
    80668062                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    80678063                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    8068                 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm), u64Imm);
     8064                IEM_MC_STORE_GREG_U64_CONST(IEM_GET_MODRM_RM(pVCpu, bRm), u64Imm);
    80698065                IEM_MC_ADVANCE_RIP_AND_FINISH();
    80708066                IEM_MC_END();
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