Changeset 65880 in vbox
- Timestamp:
- Feb 25, 2017 2:51:09 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 113663
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsOneByte.cpp.h
r65879 r65880 501 501 /** 502 502 * @opcode 0x20 503 * @opgroup op_gen_arith_bin 504 * @opflmodify of,sf,zf,af,pf,cf 505 * @opflundef af 506 * @opflclear of,cf 503 507 */ 504 508 FNIEMOP_DEF(iemOp_and_Eb_Gb) 505 509 { 506 IEMOP_MNEMONIC (and_Eb_Gb, "and Eb,Gb");510 IEMOP_MNEMONIC2(MR, AND, and, Eb, Gb, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 507 511 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF); 508 512 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rm_r8, &g_iemAImpl_and); … … 512 516 /** 513 517 * @opcode 0x21 518 * @opgroup op_gen_arith_bin 519 * @opflmodify of,sf,zf,af,pf,cf 520 * @opflundef af 521 * @opflclear of,cf 514 522 */ 515 523 FNIEMOP_DEF(iemOp_and_Ev_Gv) 516 524 { 517 IEMOP_MNEMONIC (and_Ev_Gv, "and Ev,Gv");525 IEMOP_MNEMONIC2(MR, AND, and, Ev, Gv, DISOPTYPE_HARMLESS, 0); 518 526 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF); 519 527 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rm_rv, &g_iemAImpl_and); … … 523 531 /** 524 532 * @opcode 0x22 533 * @opgroup op_gen_arith_bin 534 * @opflmodify of,sf,zf,af,pf,cf 535 * @opflundef af 536 * @opflclear of,cf 525 537 */ 526 538 FNIEMOP_DEF(iemOp_and_Gb_Eb) 527 539 { 528 IEMOP_MNEMONIC (and_Gb_Eb, "and Gb,Eb");540 IEMOP_MNEMONIC2(RM, AND, and, Gb, Eb, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 529 541 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF); 530 542 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_r8_rm, &g_iemAImpl_and); … … 534 546 /** 535 547 * @opcode 0x23 548 * @opgroup op_gen_arith_bin 549 * @opflmodify of,sf,zf,af,pf,cf 550 * @opflundef af 551 * @opflclear of,cf 536 552 */ 537 553 FNIEMOP_DEF(iemOp_and_Gv_Ev) 538 554 { 539 IEMOP_MNEMONIC (and_Gv_Ev, "and Gv,Ev");555 IEMOP_MNEMONIC2(RM, AND, and, Gv, Ev, DISOPTYPE_HARMLESS, 0); 540 556 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF); 541 557 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rv_rm, &g_iemAImpl_and); … … 545 561 /** 546 562 * @opcode 0x24 563 * @opgroup op_gen_arith_bin 564 * @opflmodify of,sf,zf,af,pf,cf 565 * @opflundef af 566 * @opflclear of,cf 547 567 */ 548 568 FNIEMOP_DEF(iemOp_and_Al_Ib) 549 569 { 550 IEMOP_MNEMONIC (and_al_Ib, "and al,Ib");570 IEMOP_MNEMONIC2(FIXED, AND, and, AL, Ib, DISOPTYPE_HARMLESS, 0); 551 571 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF); 552 572 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_AL_Ib, &g_iemAImpl_and); … … 556 576 /** 557 577 * @opcode 0x25 578 * @opgroup op_gen_arith_bin 579 * @opflmodify of,sf,zf,af,pf,cf 580 * @opflundef af 581 * @opflclear of,cf 558 582 */ 559 583 FNIEMOP_DEF(iemOp_and_eAX_Iz) 560 584 { 561 IEMOP_MNEMONIC (and_rAX_Iz, "and rAX,Iz");585 IEMOP_MNEMONIC2(FIXED, AND, and, rAX, Iz, DISOPTYPE_HARMLESS, 0); 562 586 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF); 563 587 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rAX_Iz, &g_iemAImpl_and); … … 567 591 /** 568 592 * @opcode 0x26 593 * @opmnemonic SEG 594 * @op1 ES 595 * @opgroup op_prefix 596 * @openc prefix 597 * @opdisenum OP_SEG 598 * @ophints harmless 569 599 */ 570 600 FNIEMOP_DEF(iemOp_seg_ES) … … 581 611 /** 582 612 * @opcode 0x27 613 * @opfltest af,cf 614 * @opflmodify of,sf,zf,af,pf,cf 615 * @opflundef of 583 616 */ 584 617 FNIEMOP_DEF(iemOp_daa) 585 618 { 586 IEMOP_MNEMONIC (daa_AL, "daa AL");619 IEMOP_MNEMONIC0(FIXED, DAA, daa, DISOPTYPE_HARMLESS | DISOPTYPE_INVALID_64, 0); /* express implicit AL register use */ 587 620 IEMOP_HLP_NO_64BIT(); 588 621 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 594 627 /** 595 628 * @opcode 0x28 629 * @opgroup op_gen_arith_bin 630 * @opflmodify of,sf,zf,af,pf,cf 596 631 */ 597 632 FNIEMOP_DEF(iemOp_sub_Eb_Gb) 598 633 { 599 IEMOP_MNEMONIC (sub_Eb_Gb, "sub Eb,Gb");634 IEMOP_MNEMONIC2(MR, SUB, sub, Eb, Gb, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 600 635 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rm_r8, &g_iemAImpl_sub); 601 636 } … … 604 639 /** 605 640 * @opcode 0x29 641 * @opgroup op_gen_arith_bin 642 * @opflmodify of,sf,zf,af,pf,cf 606 643 */ 607 644 FNIEMOP_DEF(iemOp_sub_Ev_Gv) 608 645 { 609 IEMOP_MNEMONIC (sub_Ev_Gv, "sub Ev,Gv");646 IEMOP_MNEMONIC2(MR, SUB, sub, Ev, Gv, DISOPTYPE_HARMLESS, 0); 610 647 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rm_rv, &g_iemAImpl_sub); 611 648 } … … 614 651 /** 615 652 * @opcode 0x2a 653 * @opgroup op_gen_arith_bin 654 * @opflmodify of,sf,zf,af,pf,cf 616 655 */ 617 656 FNIEMOP_DEF(iemOp_sub_Gb_Eb) 618 657 { 619 IEMOP_MNEMONIC (sub_Gb_Eb, "sub Gb,Eb");658 IEMOP_MNEMONIC2(RM, SUB, sub, Gb, Eb, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 620 659 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_r8_rm, &g_iemAImpl_sub); 621 660 } … … 624 663 /** 625 664 * @opcode 0x2b 665 * @opgroup op_gen_arith_bin 666 * @opflmodify of,sf,zf,af,pf,cf 626 667 */ 627 668 FNIEMOP_DEF(iemOp_sub_Gv_Ev) 628 669 { 629 IEMOP_MNEMONIC (sub_Gv_Ev, "sub Gv,Ev");670 IEMOP_MNEMONIC2(RM, SUB, sub, Gv, Ev, DISOPTYPE_HARMLESS, 0); 630 671 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rv_rm, &g_iemAImpl_sub); 631 672 } … … 634 675 /** 635 676 * @opcode 0x2c 677 * @opgroup op_gen_arith_bin 678 * @opflmodify of,sf,zf,af,pf,cf 636 679 */ 637 680 FNIEMOP_DEF(iemOp_sub_Al_Ib) 638 681 { 639 IEMOP_MNEMONIC (sub_al_Ib, "sub al,Ib");682 IEMOP_MNEMONIC2(FIXED, SUB, sub, AL, Ib, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 640 683 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_AL_Ib, &g_iemAImpl_sub); 641 684 } … … 644 687 /** 645 688 * @opcode 0x2d 689 * @opgroup op_gen_arith_bin 690 * @opflmodify of,sf,zf,af,pf,cf 646 691 */ 647 692 FNIEMOP_DEF(iemOp_sub_eAX_Iz) 648 693 { 649 IEMOP_MNEMONIC (sub_rAX_Iz, "sub rAX,Iz");694 IEMOP_MNEMONIC2(FIXED, SUB, sub, rAX, Iz, DISOPTYPE_HARMLESS, 0); 650 695 return FNIEMOP_CALL_1(iemOpHlpBinaryOperator_rAX_Iz, &g_iemAImpl_sub); 651 696 } … … 654 699 /** 655 700 * @opcode 0x2e 701 * @opmnemonic SEG 702 * @op1 CS 703 * @opgroup op_prefix 704 * @openc prefix 705 * @opdisenum OP_SEG 706 * @ophints harmless 656 707 */ 657 708 FNIEMOP_DEF(iemOp_seg_CS) … … 668 719 /** 669 720 * @opcode 0x2f 721 * @opfltest af,cf 722 * @opflmodify of,sf,zf,af,pf,cf 723 * @opflundef of 670 724 */ 671 725 FNIEMOP_DEF(iemOp_das) 672 726 { 673 IEMOP_MNEMONIC (das_AL, "das AL");727 IEMOP_MNEMONIC0(FIXED, DAS, das, DISOPTYPE_HARMLESS | DISOPTYPE_INVALID_64, 0); /* express implicit AL register use */ 674 728 IEMOP_HLP_NO_64BIT(); 675 729 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
r65879 r65880 2496 2496 offHit = sLine.find('/*', offLine); # only multiline comments for now. 2497 2497 if offHit >= 0: 2498 self.checkCodeForMacro(sLine[offLine:offHit]); 2498 2499 self.sComment = ''; 2499 2500 self.iCommentLine = self.iLine; … … 2501 2502 offLine = offHit + 2; 2502 2503 else: 2504 self.checkCodeForMacro(sLine[offLine:]); 2503 2505 offLine = len(sLine); 2504 2506 … … 2648 2650 # 2649 2651 iStart = len(asColumns); 2650 #print 'debug: %s' % (oInstr,);2651 2652 if oInstr.sEncoding is None: 2652 2653 pass; … … 2654 2655 # ASSUME the first operand is using the ModR/M encoding 2655 2656 assert len(oInstr.aoOperands) >= 1 and oInstr.aoOperands[0].usesModRM(); 2656 asColumns.append('IDX_ParseModRM,') 2657 asColumns.append('IDX_ParseModRM,'); 2657 2658 ## @todo IDX_ParseVexDest 2658 2659 # Is second operand using ModR/M too? 2659 2660 if len(oInstr.aoOperands) > 1 and oInstr.aoOperands[1].usesModRM(): 2660 2661 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' ]: 2662 2666 pass; 2663 2667 elif oInstr.sEncoding == 'vex2':
Note:
See TracChangeset
for help on using the changeset viewer.