VirtualBox

儲存庫 vbox 的更動 66912


忽略:
時間撮記:
2017-5-16 下午02:53:24 (8 年 以前)
作者:
vboxsync
訊息:

IEM: More tests for vmovups.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c

    r66909 r66912  
    12711271
    12721272
     1273/** Also encodes idxField of the register operand using idxFieldBase.   */
     1274static unsigned BS3_NEAR_CODE
     1275Bs3Cfg1EncodeMemMod0DispWithRegField(PBS3CG1STATE pThis, bool fAddrOverride, unsigned off, uint8_t iReg,
     1276                                     uint8_t cbOp, uint8_t cbMissalign, BS3CG1OPLOC enmLocation)
     1277{
     1278    pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + iReg;
     1279    return Bs3Cfg1EncodeMemMod0Disp(pThis, fAddrOverride, off, iReg, cbOp, cbMissalign, enmLocation);
     1280}
     1281
     1282
     1283
    12731284static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_MODRM_Eb_Gb(PBS3CG1STATE pThis, unsigned iEncoding)
    12741285{
     
    26932704}
    26942705
     2706
     2707/**
     2708 * Wip = VEX.W ignored.
     2709 */
    26952710static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_VEX_MODRM_WsomethingWO_Vsomething_Wip(PBS3CG1STATE pThis, unsigned iEncoding)
    26962711{
     
    27242739            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/);
    27252740            off = Bs3Cg1InsertOpcodes(pThis, off);
    2726             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
    2727             pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 2;
     2741            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 2 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
    27282742            break;
    27292743        case 4:
    27302744            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    27312745            off = Bs3Cg1InsertOpcodes(pThis, off);
    2732             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
    2733             pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3;
     2746            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 3 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
    27342747            break;
    27352748        case 5:
    27362749            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored */);
    27372750            off = Bs3Cg1InsertOpcodes(pThis, off);
    2738             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
    2739             pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3;
     2751            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 3 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
    27402752            break;
    27412753        case 6:
    27422754            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/);
    27432755            off = Bs3Cg1InsertOpcodes(pThis, off);
    2744             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
     2756            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    27452757            if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
    27462758                pThis->bAlignmentXcpt = X86_XCPT_GP;
    2747             pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3;
    27482759            break;
    27492760        case 7:
    27502761            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 0 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    27512762            off = Bs3Cg1InsertOpcodes(pThis, off);
    2752             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
     2763            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    27532764            if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
    27542765                pThis->bAlignmentXcpt = X86_XCPT_GP;
    2755             pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 3;
    27562766            break;
    27572767        /* 128-bit invalid encodings: */
     
    27932803            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1;
    27942804            break;
    2795 
    2796 #if 0
    2797         else if (iEncoding == 10)
    2798         {
    2799             off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/);
    2800             off = Bs3Cg1InsertOpcodes(pThis, off);
    2801             pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
    2802             pThis->aOperands[pThis->iRmOp].cbOp      = 32;
    2803             pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM0;
    2804             pThis->aOperands[pThis->iRegOp].cbOp     = 32;
    2805             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM1;
    2806         }
    2807         else if (iEncoding == 11)
    2808         {
     2805        case 21:
    28092806            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    28102807            off = Bs3Cg1InsertOpcodes(pThis, off);
    28112808            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
    2812             pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
    2813             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
    2814         }
    2815         else if (iEncoding == 12)
    2816         {
     2809            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5;
     2810            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4;
     2811            break;
     2812        case 22:
    28172813            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored*/);
    28182814            off = Bs3Cg1InsertOpcodes(pThis, off);
    28192815            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 5, 4);
    2820             pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM4;
    2821             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM5;
    2822         }
    2823         else if (iEncoding == 13)
    2824         {
     2816            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 4;
     2817            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 5;
     2818            break;
     2819        case 23:
    28252820            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/);
    28262821            off = Bs3Cg1InsertOpcodes(pThis, off);
    2827             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM);
    2828             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM2;
    2829         }
    2830         else if (iEncoding == 14)
    2831         {
     2822            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 2 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM_WO);
     2823            break;
     2824        case 24:
    28322825            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    28332826            off = Bs3Cg1InsertOpcodes(pThis, off);
    2834             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM);
    2835             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3;
    2836         }
    2837         else if (iEncoding == 15)
    2838         {
     2827            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 3 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM_WO);
     2828            break;
     2829        case 25:
    28392830            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 1 /*W - ignored */);
    28402831            off = Bs3Cg1InsertOpcodes(pThis, off);
    2841             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM);
    2842             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3;
    2843         }
    2844         else if (iEncoding == 16)
    2845         {
     2832            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 3 /*iReg*/, 32, 0, BS3CG1OPLOC_MEM_WO);
     2833            break;
     2834        case 26:
    28462835            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/);
    28472836            off = Bs3Cg1InsertOpcodes(pThis, off);
    2848             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM);
     2837            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 3 /*iReg*/, 32, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    28492838            if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
    28502839                pThis->bAlignmentXcpt = X86_XCPT_GP;
    2851             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3;
    2852         }
    2853         else if (iEncoding == 17)
    2854         {
     2840            break;
     2841        case 27:
    28552842            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    28562843            off = Bs3Cg1InsertOpcodes(pThis, off);
    2857             off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 32, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM);
     2844            off = Bs3Cfg1EncodeMemMod0DispWithRegField(pThis, false, off, 3 /*iReg*/, 32, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    28582845            if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
    28592846                pThis->bAlignmentXcpt = X86_XCPT_GP;
    2860             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM3;
    2861         }
    2862     /* 256-bit invalid encodings: */
    2863     else if (iEncoding == 18)
    2864     {
    2865         off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xe /*~V - invalid */, 1 /*L*/, 1 /*~R*/); /* Bad V value */
    2866         off = Bs3Cg1InsertOpcodes(pThis, off);
    2867         pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
    2868         pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM0;
    2869         pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM1;
    2870         pThis->fInvalidEncoding = true;
    2871     }
    2872     else if (iEncoding == 19)
    2873     {
    2874         off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0 /*~V - invalid */, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    2875         off = Bs3Cg1InsertOpcodes(pThis, off);
    2876         pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
    2877         pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
    2878         pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
    2879         pThis->fInvalidEncoding = true;
    2880     }
    2881     else if (iEncoding == 20)
    2882     {
    2883         pThis->abCurInstr[0] = P_RN;
    2884         off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    2885         off = Bs3Cg1InsertOpcodes(pThis, off);
    2886         pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
    2887         pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
    2888         pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
    2889         pThis->fInvalidEncoding = true;
    2890     }
    2891     else if (iEncoding == 21)
    2892     {
    2893         pThis->abCurInstr[0] = P_RZ;
    2894         off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    2895         off = Bs3Cg1InsertOpcodes(pThis, off);
    2896         pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
    2897         pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
    2898         pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
    2899         pThis->fInvalidEncoding = true;
    2900     }
    2901     else if (iEncoding == 22)
    2902     {
    2903         pThis->abCurInstr[0] = P_OZ;
    2904         off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    2905         off = Bs3Cg1InsertOpcodes(pThis, off);
    2906         pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
    2907         pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
    2908         pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
    2909         pThis->fInvalidEncoding = true;
    2910     }
    2911     else if (iEncoding == 23)
    2912     {
    2913         pThis->abCurInstr[0] = P_LK;
    2914         off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    2915         off = Bs3Cg1InsertOpcodes(pThis, off);
    2916         pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
    2917         pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM5;
    2918         pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM4;
    2919         pThis->fInvalidEncoding = true;
    2920     }
    2921 #if ARCH_BITS == 64
    2922     /* 64-bit mode registers */
    2923     else if (BS3_MODE_IS_64BIT_CODE(pThis->bMode))
    2924     {
    2925         if (iEncoding == 24)
    2926         {
    2927             off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 0 /*~R*/);
     2847            break;
     2848        /* 256-bit invalid encodings: */
     2849        case 28:
     2850            off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xe /*~V - invalid */, 1 /*L*/, 1 /*~R*/); /* Bad V value */
    29282851            off = Bs3Cg1InsertOpcodes(pThis, off);
    2929             pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 3, 4);
    2930             pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM4;
    2931             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM11;
    2932         }
    2933         else if (iEncoding == 25)
    2934         {
    2935             off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 0 /*~R*/, 1 /*~X*/, 0 /*~B*/, 0 /*W*/);
     2852            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
     2853            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 0;
     2854            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 1;
     2855            pThis->fInvalidEncoding = true;
     2856            break;
     2857        case 29:
     2858            off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0 /*~V - invalid */, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
    29362859            off = Bs3Cg1InsertOpcodes(pThis, off);
    2937             pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 4);
    2938             pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_YMM12;
    2939             pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_YMM9;
    2940         }
    2941         else
    2942             return 0;
    2943     }
    2944 #endif
    2945     else
    2946         return 0;
    2947 #endif
     2860            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2861            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5;
     2862            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4;
     2863            pThis->fInvalidEncoding = true;
     2864            break;
     2865        case 30:
     2866            pThis->abCurInstr[0] = P_RN;
     2867            off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2868            off = Bs3Cg1InsertOpcodes(pThis, off);
     2869            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2870            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5;
     2871            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4;
     2872            pThis->fInvalidEncoding = true;
     2873            break;
     2874        case 31:
     2875            pThis->abCurInstr[0] = P_RZ;
     2876            off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2877            off = Bs3Cg1InsertOpcodes(pThis, off);
     2878            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2879            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5;
     2880            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4;
     2881            pThis->fInvalidEncoding = true;
     2882            break;
     2883        case 32:
     2884            pThis->abCurInstr[0] = P_OZ;
     2885            off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2886            off = Bs3Cg1InsertOpcodes(pThis, off);
     2887            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2888            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5;
     2889            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4;
     2890            pThis->fInvalidEncoding = true;
     2891            break;
     2892        case 33:
     2893            pThis->abCurInstr[0] = P_LK;
     2894            off = Bs3Cg1InsertVex3bPrefix(pThis, 1 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 1 /*~R*/, 1 /*~X*/, 1 /*~B*/, 0 /*W*/);
     2895            off = Bs3Cg1InsertOpcodes(pThis, off);
     2896            pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 4, 5);
     2897            pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 5;
     2898            pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 4;
     2899            pThis->fInvalidEncoding = true;
     2900            break;
     2901
     2902        /* 64-bit mode registers */
     2903        case 34:
     2904            if (BS3_MODE_IS_64BIT_CODE(pThis->bMode))
     2905            {
     2906                off = Bs3Cg1InsertVex2bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 0 /*~R*/);
     2907                off = Bs3Cg1InsertOpcodes(pThis, off);
     2908                pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 3, 4);
     2909                pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 4;
     2910                pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 11;
     2911                break;
     2912            }
     2913            /* fall thru */
     2914        case 35:
     2915            if (BS3_MODE_IS_64BIT_CODE(pThis->bMode))
     2916            {
     2917                off = Bs3Cg1InsertVex3bPrefix(pThis, 0 /*offDst*/, 0xf /*~V*/, 1 /*L*/, 0 /*~R*/, 1 /*~X*/, 0 /*~B*/, 0 /*W*/);
     2918                off = Bs3Cg1InsertOpcodes(pThis, off);
     2919                pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 4);
     2920                pThis->aOperands[pThis->iRmOp ].idxField = pThis->aOperands[pThis->iRmOp ].idxFieldBase + 12;
     2921                pThis->aOperands[pThis->iRegOp].idxField = pThis->aOperands[pThis->iRegOp].idxFieldBase + 9;
     2922                break;
     2923            }
     2924            /* fall thru */
    29482925
    29492926        default:
     
    29552932}
    29562933
    2957 
    29582934#endif /* BS3CG1_WITH_VEX */
    2959 
    29602935
    29612936
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette