VirtualBox

Changeset 65880 in vbox


Ignore:
Timestamp:
Feb 25, 2017 2:51:09 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
113663
Message:

IEM,DIS: Updates

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

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

    r65879 r65880  
    501501/**
    502502 * @opcode      0x20
     503 * @opgroup     op_gen_arith_bin
     504 * @opflmodify  of,sf,zf,af,pf,cf
     505 * @opflundef   af
     506 * @opflclear   of,cf
    503507 */
    504508FNIEMOP_DEF(iemOp_and_Eb_Gb)
    505509{
    506     IEMOP_MNEMONIC(and_Eb_Gb, "and Eb,Gb");
     510    IEMOP_MNEMONIC2(MR, AND, and, Eb, Gb, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    507511    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF);
    508512    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rm_r8, &g_iemAImpl_and);
     
    512516/**
    513517 * @opcode      0x21
     518 * @opgroup     op_gen_arith_bin
     519 * @opflmodify  of,sf,zf,af,pf,cf
     520 * @opflundef   af
     521 * @opflclear   of,cf
    514522 */
    515523FNIEMOP_DEF(iemOp_and_Ev_Gv)
    516524{
    517     IEMOP_MNEMONIC(and_Ev_Gv, "and Ev,Gv");
     525    IEMOP_MNEMONIC2(MR, AND, and, Ev, Gv, DISOPTYPE_HARMLESS, 0);
    518526    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF);
    519527    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rm_rv, &g_iemAImpl_and);
     
    523531/**
    524532 * @opcode      0x22
     533 * @opgroup     op_gen_arith_bin
     534 * @opflmodify  of,sf,zf,af,pf,cf
     535 * @opflundef   af
     536 * @opflclear   of,cf
    525537 */
    526538FNIEMOP_DEF(iemOp_and_Gb_Eb)
    527539{
    528     IEMOP_MNEMONIC(and_Gb_Eb, "and Gb,Eb");
     540    IEMOP_MNEMONIC2(RM, AND, and, Gb, Eb, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    529541    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF);
    530542    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_r8_rm, &g_iemAImpl_and);
     
    534546/**
    535547 * @opcode      0x23
     548 * @opgroup     op_gen_arith_bin
     549 * @opflmodify  of,sf,zf,af,pf,cf
     550 * @opflundef   af
     551 * @opflclear   of,cf
    536552 */
    537553FNIEMOP_DEF(iemOp_and_Gv_Ev)
    538554{
    539     IEMOP_MNEMONIC(and_Gv_Ev, "and Gv,Ev");
     555    IEMOP_MNEMONIC2(RM, AND, and, Gv, Ev, DISOPTYPE_HARMLESS, 0);
    540556    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF);
    541557    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rv_rm, &g_iemAImpl_and);
     
    545561/**
    546562 * @opcode      0x24
     563 * @opgroup     op_gen_arith_bin
     564 * @opflmodify  of,sf,zf,af,pf,cf
     565 * @opflundef   af
     566 * @opflclear   of,cf
    547567 */
    548568FNIEMOP_DEF(iemOp_and_Al_Ib)
    549569{
    550     IEMOP_MNEMONIC(and_al_Ib, "and al,Ib");
     570    IEMOP_MNEMONIC2(FIXED, AND, and, AL, Ib, DISOPTYPE_HARMLESS, 0);
    551571    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF);
    552572    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_AL_Ib, &g_iemAImpl_and);
     
    556576/**
    557577 * @opcode      0x25
     578 * @opgroup     op_gen_arith_bin
     579 * @opflmodify  of,sf,zf,af,pf,cf
     580 * @opflundef   af
     581 * @opflclear   of,cf
    558582 */
    559583FNIEMOP_DEF(iemOp_and_eAX_Iz)
    560584{
    561     IEMOP_MNEMONIC(and_rAX_Iz, "and rAX,Iz");
     585    IEMOP_MNEMONIC2(FIXED, AND, and, rAX, Iz, DISOPTYPE_HARMLESS, 0);
    562586    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF);
    563587    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rAX_Iz, &g_iemAImpl_and);
     
    567591/**
    568592 * @opcode      0x26
     593 * @opmnemonic  SEG
     594 * @op1         ES
     595 * @opgroup     op_prefix
     596 * @openc       prefix
     597 * @opdisenum   OP_SEG
     598 * @ophints     harmless
    569599 */
    570600FNIEMOP_DEF(iemOp_seg_ES)
     
    581611/**
    582612 * @opcode      0x27
     613 * @opfltest    af,cf
     614 * @opflmodify  of,sf,zf,af,pf,cf
     615 * @opflundef   of
    583616 */
    584617FNIEMOP_DEF(iemOp_daa)
    585618{
    586     IEMOP_MNEMONIC(daa_AL, "daa AL");
     619    IEMOP_MNEMONIC0(FIXED, DAA, daa, DISOPTYPE_HARMLESS | DISOPTYPE_INVALID_64, 0); /* express implicit AL register use */
    587620    IEMOP_HLP_NO_64BIT();
    588621    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    594627/**
    595628 * @opcode      0x28
     629 * @opgroup     op_gen_arith_bin
     630 * @opflmodify  of,sf,zf,af,pf,cf
    596631 */
    597632FNIEMOP_DEF(iemOp_sub_Eb_Gb)
    598633{
    599     IEMOP_MNEMONIC(sub_Eb_Gb, "sub Eb,Gb");
     634    IEMOP_MNEMONIC2(MR, SUB, sub, Eb, Gb, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    600635    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rm_r8, &g_iemAImpl_sub);
    601636}
     
    604639/**
    605640 * @opcode      0x29
     641 * @opgroup     op_gen_arith_bin
     642 * @opflmodify  of,sf,zf,af,pf,cf
    606643 */
    607644FNIEMOP_DEF(iemOp_sub_Ev_Gv)
    608645{
    609     IEMOP_MNEMONIC(sub_Ev_Gv, "sub Ev,Gv");
     646    IEMOP_MNEMONIC2(MR, SUB, sub, Ev, Gv, DISOPTYPE_HARMLESS, 0);
    610647    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rm_rv, &g_iemAImpl_sub);
    611648}
     
    614651/**
    615652 * @opcode      0x2a
     653 * @opgroup     op_gen_arith_bin
     654 * @opflmodify  of,sf,zf,af,pf,cf
    616655 */
    617656FNIEMOP_DEF(iemOp_sub_Gb_Eb)
    618657{
    619     IEMOP_MNEMONIC(sub_Gb_Eb, "sub Gb,Eb");
     658    IEMOP_MNEMONIC2(RM, SUB, sub, Gb, Eb, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    620659    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_r8_rm, &g_iemAImpl_sub);
    621660}
     
    624663/**
    625664 * @opcode      0x2b
     665 * @opgroup     op_gen_arith_bin
     666 * @opflmodify  of,sf,zf,af,pf,cf
    626667 */
    627668FNIEMOP_DEF(iemOp_sub_Gv_Ev)
    628669{
    629     IEMOP_MNEMONIC(sub_Gv_Ev, "sub Gv,Ev");
     670    IEMOP_MNEMONIC2(RM, SUB, sub, Gv, Ev, DISOPTYPE_HARMLESS, 0);
    630671    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rv_rm, &g_iemAImpl_sub);
    631672}
     
    634675/**
    635676 * @opcode      0x2c
     677 * @opgroup     op_gen_arith_bin
     678 * @opflmodify  of,sf,zf,af,pf,cf
    636679 */
    637680FNIEMOP_DEF(iemOp_sub_Al_Ib)
    638681{
    639     IEMOP_MNEMONIC(sub_al_Ib, "sub al,Ib");
     682    IEMOP_MNEMONIC2(FIXED, SUB, sub, AL, Ib, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    640683    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_AL_Ib, &g_iemAImpl_sub);
    641684}
     
    644687/**
    645688 * @opcode      0x2d
     689 * @opgroup     op_gen_arith_bin
     690 * @opflmodify  of,sf,zf,af,pf,cf
    646691 */
    647692FNIEMOP_DEF(iemOp_sub_eAX_Iz)
    648693{
    649     IEMOP_MNEMONIC(sub_rAX_Iz, "sub rAX,Iz");
     694    IEMOP_MNEMONIC2(FIXED, SUB, sub, rAX, Iz, DISOPTYPE_HARMLESS, 0);
    650695    return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rAX_Iz, &g_iemAImpl_sub);
    651696}
     
    654699/**
    655700 * @opcode      0x2e
     701 * @opmnemonic  SEG
     702 * @op1         CS
     703 * @opgroup     op_prefix
     704 * @openc       prefix
     705 * @opdisenum   OP_SEG
     706 * @ophints     harmless
    656707 */
    657708FNIEMOP_DEF(iemOp_seg_CS)
     
    668719/**
    669720 * @opcode      0x2f
     721 * @opfltest    af,cf
     722 * @opflmodify  of,sf,zf,af,pf,cf
     723 * @opflundef   of
    670724 */
    671725FNIEMOP_DEF(iemOp_das)
    672726{
    673     IEMOP_MNEMONIC(das_AL, "das AL");
     727    IEMOP_MNEMONIC0(FIXED, DAS, das, DISOPTYPE_HARMLESS | DISOPTYPE_INVALID_64, 0); /* express implicit AL register use */
    674728    IEMOP_HLP_NO_64BIT();
    675729    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py

    r65879 r65880  
    24962496                        offHit = sLine.find('/*', offLine); # only multiline comments for now.
    24972497                        if offHit >= 0:
     2498                            self.checkCodeForMacro(sLine[offLine:offHit]);
    24982499                            self.sComment     = '';
    24992500                            self.iCommentLine = self.iLine;
     
    25012502                            offLine = offHit + 2;
    25022503                        else:
     2504                            self.checkCodeForMacro(sLine[offLine:]);
    25032505                            offLine = len(sLine);
    25042506
     
    26482650                #
    26492651                iStart = len(asColumns);
    2650                 #print 'debug: %s' % (oInstr,);
    26512652                if oInstr.sEncoding is None:
    26522653                    pass;
     
    26542655                    # ASSUME the first operand is using the ModR/M encoding
    26552656                    assert len(oInstr.aoOperands) >= 1 and oInstr.aoOperands[0].usesModRM();
    2656                     asColumns.append('IDX_ParseModRM,')
     2657                    asColumns.append('IDX_ParseModRM,');
    26572658                    ## @todo IDX_ParseVexDest
    26582659                    # Is second operand using ModR/M too?
    26592660                    if len(oInstr.aoOperands) > 1 and oInstr.aoOperands[1].usesModRM():
    26602661                        asColumns.append('IDX_UseModRM,')
    2661                 elif oInstr.sEncoding in ['prefix', 'fixed' ]:
     2662                elif oInstr.sEncoding in [ 'prefix', ]:
     2663                    for oOperand in oInstr.aoOperands:
     2664                        asColumns.append('0,');
     2665                elif oInstr.sEncoding in [ 'fixed' ]:
    26622666                    pass;
    26632667                elif oInstr.sEncoding == 'vex2':
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