Changeset 65806 in vbox
- Timestamp:
- Feb 20, 2017 8:58:46 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py
r65805 r65806 49 49 # Annotation example: 50 50 # 51 # @opmnemonic add52 # @op1 reg:Eb53 # @op2 rm:Gb54 # @opmaps onebyte55 # @oppfx none56 # @opcode 0x0057 # @openc ModR/M58 # @opfltest none59 # @opflmodify of,sz,zf,af,pf,cf60 # @opflundef none61 # @opflset none62 # @opflclear none63 # @ophints harmless64 # @opstats add_Eb_Gb65 # @opgroup op_gen_arith_bin66 # @optest in1=1 in2=1 -> out1=2 outfl=a?,p?67 # @optest oppfx:o32 in1=0xfffffffe:dw in2=1:dw -> out1=0xffffffff:dw outfl=a?,p?51 # \@opmnemonic add 52 # \@op1 reg:Eb 53 # \@op2 rm:Gb 54 # \@opmaps onebyte 55 # \@oppfx none 56 # \@opcode 0x00 57 # \@openc ModR/M 58 # \@opfltest none 59 # \@opflmodify of,sz,zf,af,pf,cf 60 # \@opflundef none 61 # \@opflset none 62 # \@opflclear none 63 # \@ophints harmless 64 # \@opstats add_Eb_Gb 65 # \@opgroup op_gen_arith_bin 66 # \@optest in1=1 in2=1 -> out1=2 outfl=a?,p? 67 # \@optest oppfx:o32 in1=0xfffffffe:dw in2=1:dw -> out1=0xffffffff:dw outfl=a?,p? 68 68 69 69 … … 149 149 ## CPU context fields. 150 150 kdFields = { 151 'op1': [], ## @op1152 'op2': [], ## @op2153 'op3': [], ## @op3154 'op4': [], ## @op4151 'op1': [], ## \@op1 152 'op2': [], ## \@op2 153 'op3': [], ## \@op3 154 'op4': [], ## \@op4 155 155 156 156 'efl': [], … … 283 283 """ 284 284 285 ## @op[1-4]285 ## \@op[1-4] 286 286 kdLocations = { 287 287 'reg': [], ## modrm.reg … … 289 289 }; 290 290 291 ## @op[1-4]291 ## \@op[1-4] 292 292 kdTypes = { 293 293 'Eb': [], … … 686 686 def parseTagOpBrief(self, sTag, aasSections, iTagLine, iEndLine): 687 687 """ 688 Key:@opbrief688 Tag: \@opbrief 689 689 Value: Text description, multiple sections, appended. 690 690 … … 716 716 def parseTagOpDesc(self, sTag, aasSections, iTagLine, iEndLine): 717 717 """ 718 Key:@opdesc718 Tag: \@opdesc 719 719 Value: Text description, multiple sections, appended. 720 720 … … 754 754 def parseTagOpOperandN(self, sTag, aasSections, iTagLine, iEndLine): 755 755 """ 756 Tags: @op1, @op2, @op3,@op4756 Tags: \@op1, \@op2, \@op3, \@op4 757 757 Value: where:type 758 758 … … 799 799 def parseTagOpMaps(self, sTag, aasSections, iTagLine, iEndLine): 800 800 """ 801 Tag: @opmaps801 Tag: \@opmaps 802 802 Value: map[,map2] 803 803 … … 832 832 return True; 833 833 834 ## @oppfx values.834 ## \@oppfx values. 835 835 kdPrefixes = { 836 836 '0x66': [], … … 841 841 def parseTagOpPfx(self, sTag, aasSections, iTagLine, iEndLine): 842 842 """ 843 Tag: @oppfx843 Tag: \@oppfx 844 844 Value: none|0x66|0xf3|0xf2 845 845 … … 875 875 return True; 876 876 877 ## Special @opcode tag values.877 ## Special \@opcode tag values. 878 878 kdSpecialOpcodes = { 879 879 '/reg': [], … … 887 887 def parseTagOpcode(self, sTag, aasSections, iTagLine, iEndLine): 888 888 """ 889 Tag: @opcode889 Tag: \@opcode 890 890 Value: 0x?? | /reg | mr/reg | 11 /reg | !11 /reg | 11 mr/reg | !11 mr/reg 891 891 … … 909 909 return True; 910 910 911 ## Valid values for @openc911 ## Valid values for \@openc 912 912 kdEncodings = { 913 913 'ModR/M': [], … … 916 916 def parseTagOpEnc(self, sTag, aasSections, iTagLine, iEndLine): 917 917 """ 918 Tag: @openc918 Tag: \@openc 919 919 Value: ModR/M|TBD 920 920 … … 939 939 return True; 940 940 941 ## EFlags values allowed in @opfltest, @opflmodify, @opflundef, @opflset, and@opflclear.941 ## EFlags values allowed in \@opfltest, \@opflmodify, \@opflundef, \@opflset, and \@opflclear. 942 942 kdEFlags = { 943 943 # Debugger flag notation: … … 996 996 997 997 def parseTagOpEFlags(self, sTag, aasSections, iTagLine, iEndLine): 998 """ @opfltest, @opflmodify, @opflundef, @opflset, @opflclear """ 998 """ 999 Tags: \@opfltest, \@opflmodify, \@opflundef, \@opflset, \@opflclear 1000 Value: <eflags specifier> 1001 1002 """ 999 1003 oInstr = self.ensureInstructionForOpTag(iTagLine); 1000 1004 … … 1023 1027 return True; 1024 1028 1025 ## @ophints values.1029 ## \@ophints values. 1026 1030 kdHints = { 1027 1031 'invalid': 'DISOPTYPE_INVALID', ##< … … 1057 1061 def parseTagOpHints(self, sTag, aasSections, iTagLine, iEndLine): 1058 1062 """ 1059 Tag: @ophints1063 Tag: \@ophints 1060 1064 Value: Comma or space separated list of flags and hints. 1061 1065 … … 1089 1093 return True; 1090 1094 1091 ## @opcpuid1095 ## \@opcpuid 1092 1096 kdCpuIdFlags = { 1093 1097 'vme': 'X86_CPUID_FEATURE_EDX_VME', … … 1135 1139 def parseTagOpCpuId(self, sTag, aasSections, iTagLine, iEndLine): 1136 1140 """ 1137 Tag: @opcpuid1141 Tag: \@opcpuid 1138 1142 Value: none | <CPUID flag specifier> 1139 1143 … … 1169 1173 def parseTagOpGroup(self, sTag, aasSections, iTagLine, iEndLine): 1170 1174 """ 1171 Tag: @opgroup1175 Tag: \@opgroup 1172 1176 Value: op_grp1[_subgrp2[_subsubgrp3]] 1173 1177 … … 1193 1197 return True; 1194 1198 1195 ## @opunused, @opinvalid,@opinvlstyle1199 ## \@opunused, \@opinvalid, \@opinvlstyle 1196 1200 kdInvalidStyles = { 1197 1201 'immediate': [], ##< CPU stops decoding immediately after the opcode. … … 1204 1208 def parseTagOpUnusedInvalid(self, sTag, aasSections, iTagLine, iEndLine): 1205 1209 """ 1206 Tag: @opunused, @opinvalid,@opinvlstyle1210 Tag: \@opunused, \@opinvalid, \@opinvlstyle 1207 1211 Value: <invalid opcode behaviour style> 1208 1212 1209 The @opunused indicates the specification is for a currently unused1213 The \@opunused indicates the specification is for a currently unused 1210 1214 instruction encoding. 1211 1215 1212 The @opinvalid indicates the specification is for an invalid currently1216 The \@opinvalid indicates the specification is for an invalid currently 1213 1217 instruction encoding (like UD2). 1214 1218 1215 The @opinvlstyle just indicates how CPUs decode the instruction when1216 not supported ( @opcpuid,@opmincpu) or disabled.1219 The \@opinvlstyle just indicates how CPUs decode the instruction when 1220 not supported (\@opcpuid, \@opmincpu) or disabled. 1217 1221 """ 1218 1222 oInstr = self.ensureInstructionForOpTag(iTagLine); … … 1250 1254 def parseTagOpTest(self, sTag, aasSections, iTagLine, iEndLine): 1251 1255 """ 1252 Tag: @optest1256 Tag: \@optest 1253 1257 Value: [<selectors>[ ]?] <inputs> -> <outputs> 1254 1258 Example: mode==64bit ? in1=0xfffffffe:dw in2=1:dw -> out1=0xffffffff:dw outfl=a?,p? … … 1380 1384 def parseTagOpFunction(self, sTag, aasSections, iTagLine, iEndLine): 1381 1385 """ 1382 Tag: @opfunction1386 Tag: \@opfunction 1383 1387 Value: <VMM function name> 1384 1388 … … 1408 1412 def parseTagOpStats(self, sTag, aasSections, iTagLine, iEndLine): 1409 1413 """ 1410 Tag: @opstats1414 Tag: \@opstats 1411 1415 Value: <VMM statistics base name> 1412 1416 … … 1436 1440 def parseTagOpDone(self, sTag, aasSections, iTagLine, iEndLine): 1437 1441 """ 1438 Tag: @opdone1442 Tag: \@opdone 1439 1443 Value: none 1440 1444
Note:
See TracChangeset
for help on using the changeset viewer.