Changeset 98842 in vbox
- Timestamp:
- Mar 6, 2023 5:14:45 PM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 156165
- Location:
- trunk/src/VBox
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
r98103 r98842 10 10 disassembler tables and tests. 11 11 """ 12 13 from __future__ import print_function; 12 14 13 15 __copyright__ = \ … … 1600 1602 1601 1603 # The /r form: 1602 if len(sOpcode) == 4 and sOpcode.startswith('/') and sOpcode[-1].isdigit():1603 return int(sOpcode[ -1:]) << 3;1604 if len(sOpcode) == 2 and sOpcode[0] == '/' and sOpcode[1].isdigit(): 1605 return int(sOpcode[1:]) << 3; 1604 1606 1605 1607 # The 11/r form: … … 3645 3647 return 0; 3646 3648 3647 def __parseAll(): 3649 ## List of all main instruction files and their default maps. 3650 g_aasAllInstrFilesAndDefaultMap = ( 3651 ( 'IEMAllInstructionsOneByte.cpp.h', 'one', ), 3652 ( 'IEMAllInstructionsTwoByte0f.cpp.h', 'two0f', ), 3653 ( 'IEMAllInstructionsThree0f38.cpp.h', 'three0f38', ), 3654 ( 'IEMAllInstructionsThree0f3a.cpp.h', 'three0f3a', ), 3655 ( 'IEMAllInstructionsVexMap1.cpp.h', 'vexmap1', ), 3656 ( 'IEMAllInstructionsVexMap2.cpp.h', 'vexmap2', ), 3657 ( 'IEMAllInstructionsVexMap3.cpp.h', 'vexmap3', ), 3658 ( 'IEMAllInstructions3DNow.cpp.h', '3dnow', ), 3659 ); 3660 3661 def parseAll(): 3648 3662 """ 3649 3663 Parses all the IEMAllInstruction*.cpp.h files. … … 3653 3667 sSrcDir = os.path.dirname(os.path.abspath(__file__)); 3654 3668 cErrors = 0; 3655 for sDefaultMap, sName in [ 3656 ( 'one', 'IEMAllInstructionsOneByte.cpp.h'), 3657 ( 'two0f', 'IEMAllInstructionsTwoByte0f.cpp.h'), 3658 ( 'three0f38', 'IEMAllInstructionsThree0f38.cpp.h'), 3659 ( 'three0f3a', 'IEMAllInstructionsThree0f3a.cpp.h'), 3660 ( 'vexmap1', 'IEMAllInstructionsVexMap1.cpp.h'), 3661 ( 'vexmap2', 'IEMAllInstructionsVexMap2.cpp.h'), 3662 ( 'vexmap3', 'IEMAllInstructionsVexMap3.cpp.h'), 3663 ( '3dnow', 'IEMAllInstructions3DNow.cpp.h'), 3664 ]: 3669 for sName, sDefaultMap in g_aasAllInstrFilesAndDefaultMap: 3665 3670 cErrors += __parseFileByName(os.path.join(sSrcDir, sName), sDefaultMap); 3666 3671 cErrors += __doTestCopying(); … … 3675 3680 3676 3681 if cErrors != 0: 3677 #raise Exception('%d parse errors' % (cErrors,)); 3678 sys.exit(1); 3682 raise Exception('%d parse errors' % (cErrors,)); 3679 3683 return True; 3680 3684 3681 3682 3683 __parseAll();3684 3685 3685 3686 … … 3718 3719 elif oInstr.sEncoding == 'ModR/M': 3719 3720 # ASSUME the first operand is using the ModR/M encoding 3720 assert len(oInstr.aoOperands) >= 1 and oInstr.aoOperands[0].usesModRM() ;3721 assert len(oInstr.aoOperands) >= 1 and oInstr.aoOperands[0].usesModRM(), "oInstr=%s" % (oInstr,); 3721 3722 asColumns.append('IDX_ParseModRM,'); 3722 3723 elif oInstr.sEncoding in [ 'prefix', ]: … … 3837 3838 """ 3838 3839 Generates disassembler tables. 3840 3841 Returns exit code. 3839 3842 """ 3843 3844 # 3845 # Parse all. 3846 # 3847 try: 3848 parseAll(); 3849 except Exception as oXcpt: 3850 print('error: parseAll failed: %s' % (oXcpt,), file = sys.stderr); 3851 return 1; 3852 3840 3853 3841 3854 # … … 3948 3961 oDstFile.write('\n'); 3949 3962 #break; #for now 3963 return 0; 3950 3964 3951 3965 if __name__ == '__main__': 3952 generateDisassemblerTables();3953 3966 sys.exit(generateDisassemblerTables()); 3967 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-data.py
r98107 r98842 452 452 Returns success indicator. 453 453 """ 454 455 # 456 # Do the parsing. 457 # 458 try: 459 iai.parseAll(); 460 except Exception as oXcpt: 461 print('error: parseAll failed: %s' % (oXcpt,), file = sys.stderr); 462 return False; 454 463 455 464 #
Note:
See TracChangeset
for help on using the changeset viewer.