Best Python code snippet using playwright-python
mapping_insn_op-arch.py
Source:mapping_insn_op-arch.py
...92#},93#{ /* ARM_ADCri, ARM_INS_ADC: adc${s}${p} $rd, $rn, $imm */94# { CS_AC_WRITE, CS_AC_READ, 0 }95#},96def print_entry(arch, insn_id, mnem, mapping, mnem_can_be_wrong):97 insn = "%s_%s" %(arch, insn_id)98 arch1 = arch99 if arch.upper() == 'AARCH64':100 arch1 = 'ARM64'101 # first, try to find this entry in old MappingInsn.inc file102 for i in range(len(mapping)):103 if mapping[i].startswith('{') and '/*' in mapping[i]:104 #print(mapping[i])105 tmp = mapping[i].split('/*')106 tmp = tmp[1].strip()107 tmp = tmp.split(',')108 #print("insn2 = |%s|" %tmp.strip())109 if tmp[0].strip() == insn:110 if not mnem_can_be_wrong:111 if arch.upper() == 'ARM':112 print('''113{\t/* %s, %s_INS_%s: %s */114\t%s115},'''% (insn, arch1, mnem, mnem.lower(), mapping[i + 1].strip()))116 else: # ARM64117 print('''118{\t/* %s, %s_INS_%s: %s */119\t%s120\t%s121},'''% (insn, arch, mnem, mnem.lower(), mapping[i + 1].strip(), mapping[i + 2].strip()))122 else:123 if arch.upper() == 'ARM':124 print('''125{\t/* %s, %s126\t%s127},'''% (insn, ''.join(tmp[1:]), mapping[i + 1].strip()))128 else: # ARM64129 print('''130{\t/* %s, %s131\t%s132\t%s133},'''% (insn, ''.join(tmp[1:]), mapping[i + 1].strip(), mapping[i + 2].strip()))134 return135 if mnem_can_be_wrong:136 #print("======== CANNOT FIND %s, mapping to %s" %(insn, mnem))137 return138 pass139 # this insn does not exist in mapping table140 if arch.upper() == 'ARM':141 print('''142{\t/* %s, %s_INS_%s: %s */143\t{ 0 }144},'''% (insn, arch1, mnem, mnem.lower()))145 else:146 print('''147{\t/* %s, %s_INS_%s: %s */148\t0,149\t{ 0 }150},'''% (insn, arch, mnem, mnem.lower()))151# extract from GenInstrInfo.inc, because the insn id is in order152enum_count = 0153meet_insn = False154f = open(sys.argv[2])155lines = f.readlines()156f.close()157count = 0158last_mnem = None159def is_pseudo_insn(insn, lines):160 return False161 for line in lines:162 tmp = '= %s' %insn163 if tmp in line and 'MCID::Pseudo' in line:164 return True165 return False166# 1st enum is register enum167for line in lines:168 line = line.rstrip()169 if len(line.strip()) == 0:170 continue171 if line.strip() == 'enum {':172 enum_count += 1173 #print(line.strip())174 continue175 line = line.strip()176 if enum_count == 1:177 # skip pseudo instructions178 if '__' in line or 'setjmp' in line or 'longjmp' in line or 'Pseudo' in line:179 continue180 elif 'INSTRUCTION_LIST_END' in line:181 break182 else:183 insn = line.split('=')[0].strip()184 # skip more pseudo instruction185 if is_pseudo_insn(insn, lines):186 continue187 '''188 insn = None189 if meet_insn:190 # enum items191 insn = line.split('=')[0].strip()192 if 'CALLSTACK' in insn or 'TAILJUMP' in insn:193 # pseudo instruction194 insn = None195 elif line.startswith(first_insn):196 insn = line.split('=')[0].strip()197 meet_insn = True198 if insn:199 count += 1200 if insn == 'BSWAP16r_BAD':201 last_mnem = 'BSWAP'202 print_entry(arch.upper(), insn, last_mnem, mapping, False)203 elif insn == 'CMOVNP_Fp32':204 last_mnem = 'FCMOVNP'205 print_entry(arch.upper(), insn, last_mnem, mapping, False)206 elif insn == 'CMOVP_Fp3':207 last_mnem = 'FCMOVP'208 print_entry(arch.upper(), insn, last_mnem, mapping, False)209 elif insn == 'CMPSDrm_Int':210 last_mnem = 'CMPSD'211 print_entry(arch.upper(), insn, last_mnem, mapping, False)212 elif insn == 'MOVSX16rm16':213 last_mnem = 'MOVSX'214 print_entry(arch.upper(), insn, last_mnem, mapping, False)215 elif insn == 'MOVZX16rm16':216 last_mnem = 'MOVZX'217 print_entry(arch.upper(), insn, last_mnem, mapping, False)218 elif insn == 'ST_Fp32m':219 last_mnem = 'FST'220 print_entry(arch.upper(), insn, last_mnem, mapping, False)221 elif insn == 'CMOVNP_Fp64':222 last_mnem = 'FCMOVNU'223 print_entry(arch.upper(), insn, last_mnem, mapping, False)224 elif insn == 'CMPSDrr_Int':225 last_mnem = 'CMPSD'226 print_entry(arch.upper(), insn, last_mnem, mapping, False)227 elif insn == 'CMPSSrm_Int':228 last_mnem = 'CMPSS'229 print_entry(arch.upper(), insn, last_mnem, mapping, False)230 elif insn == 'VCMPSDrm_Int':231 last_mnem = 'VCMPSD'232 print_entry(arch.upper(), insn, last_mnem, mapping, False)233 elif insn == 'VCMPSSrm_Int':234 last_mnem = 'VCMPSS'235 print_entry(arch.upper(), insn, last_mnem, mapping, False)236 elif insn == 'VPCMOVYrrr_REV':237 last_mnem = 'VPCMOV'238 print_entry(arch.upper(), insn, last_mnem, mapping, False)239 elif insn == 'VRNDSCALESDZm':240 last_mnem = 'VRNDSCALESD'241 print_entry(arch.upper(), insn, last_mnem, mapping, False)242 elif insn == 'VRNDSCALESSZm':243 last_mnem = 'VRNDSCALESS'244 print_entry(arch.upper(), insn, last_mnem, mapping, False)245 elif insn == 'VMAXCPDZ128rm':246 last_mnem = 'VMAXPD'247 print_entry(arch.upper(), insn, last_mnem, mapping, False)248 elif insn == 'VMAXCPSZ128rm':249 last_mnem = 'VMAXPS'250 print_entry(arch.upper(), insn, last_mnem, mapping, False)251 elif insn == 'VMAXCSDZrm':252 last_mnem = 'VMAXSD'253 print_entry(arch.upper(), insn, last_mnem, mapping, False)254 elif insn == 'VMAXCSSZrm':255 last_mnem = 'VMAXSS'256 print_entry(arch.upper(), insn, last_mnem, mapping, False)257 elif insn == 'VMINCPDZ128rm':258 last_mnem = 'VMINPD'259 print_entry(arch.upper(), insn, last_mnem, mapping, False)260 elif insn == 'VMINCPSZ128rm':261 last_mnem = 'VMINPS'262 print_entry(arch.upper(), insn, last_mnem, mapping, False)263 elif insn == 'VMINCSDZrm':264 last_mnem = 'VMINSD'265 print_entry(arch.upper(), insn, last_mnem, mapping, False)266 elif insn == 'VMINCSSZrm':267 last_mnem = 'VMINSS'268 print_entry(arch.upper(), insn, last_mnem, mapping, False)269 elif insn == 'VMOV64toPQIZrm':270 last_mnem = 'VMOVQ'271 print_entry(arch.upper(), insn, last_mnem, mapping, False)272 elif insn == 'VPERMIL2PDYrr_REV':273 last_mnem = 'VPERMILPD'274 print_entry(arch.upper(), insn, last_mnem, mapping, False)275 elif insn == 'VPERMIL2PSYrr_REV':276 last_mnem = 'VPERMILPS'277 print_entry(arch.upper(), insn, last_mnem, mapping, False)278 elif insn == 'VCVTSD2SI64Zrm_Int':279 last_mnem = 'VCVTSD2SI'280 print_entry(arch.upper(), insn, last_mnem, mapping, False)281 elif insn == 'VCVTSD2SSrm_Int':282 last_mnem = 'VCVTSD2SS'283 print_entry(arch.upper(), insn, last_mnem, mapping, False)284 elif insn == 'VCVTSS2SI64Zrm_Int':285 last_mnem = 'VCVTSS2SI'286 print_entry(arch.upper(), insn, last_mnem, mapping, False)287 elif insn == 'VCVTTSD2SI64Zrm_Int':288 last_mnem = 'VCVTTSD2SI'289 print_entry(arch.upper(), insn, last_mnem, mapping, False)290 elif insn == 'VCVTTSS2SI64Zrm_Int':291 last_mnem = 'VCVTTSS2SI'292 print_entry(arch.upper(), insn, last_mnem, mapping, False)293 elif insn.startswith('VFMSUBADD'):294 if insn[len('VFMSUBADD')].isdigit():295 last_mnem = insn[:len('VFMSUBADD123xy')]296 else:297 last_mnem = insn[:len('VFMSUBADDSS')]298 print_entry(arch.upper(), insn, last_mnem, mapping, False)299 elif insn.startswith('VFMADDSUB'):300 if insn[len('VFMADDSUB')].isdigit():301 last_mnem = insn[:len('VFMADDSUB123xy')]302 else:303 last_mnem = insn[:len('VFMADDSUBSS')]304 print_entry(arch.upper(), insn, last_mnem, mapping, False)305 elif insn.startswith('VFMADD'):306 if insn[len('VFMADD')].isdigit():307 last_mnem = insn[:len('VFMADD123PD')]308 else:309 last_mnem = insn[:len('VFMADDPD')]310 print_entry(arch.upper(), insn, last_mnem, mapping, False)311 elif insn.startswith('VFMSUB'):312 if insn[len('VFMSUB')].isdigit():313 last_mnem = insn[:len('VFMSUB123PD')]314 else:315 last_mnem = insn[:len('VFMSUBPD')]316 print_entry(arch.upper(), insn, last_mnem, mapping, False)317 elif insn.startswith('VFNMADD'):318 if insn[len('VFNMADD')].isdigit():319 last_mnem = insn[:len('VFNMADD123xy')]320 else:321 last_mnem = insn[:len('VFNMADDSS')]322 print_entry(arch.upper(), insn, last_mnem, mapping, False)323 elif insn.startswith('VFNMSUB'):324 if insn[len('VFNMSUB')].isdigit():325 last_mnem = insn[:len('VFNMSUB123xy')]326 else:327 last_mnem = insn[:len('VFNMSUBSS')]328 print_entry(arch.upper(), insn, last_mnem, mapping, False)329 '''330 if insn in insn_id_list:331 # trust old mapping table332 last_mnem = insn_id_list[insn].upper()333 print_entry(arch, insn, insn_id_list[insn].upper(), mapping, False)334 else:335 #pass336 # the last option when we cannot find mnem: use the last good mnem...
mapping_insn-arch.py
Source:mapping_insn-arch.py
...95##ifndef CAPSTONE_DIET96# { 0 }, { 0 }, { X86_GRP_NOT64BITMODE, 0 }, 0, 097##endif98#},99def print_entry(arch, insn_id, mnem, mapping, mnem_can_be_wrong):100 #insn = "%s_%s" %(arch.upper(), insn_id)101 insn = "%s_%s" %(arch, insn_id)102 arch1 = arch103 if arch.upper() == 'AARCH64':104 arch1 = 'ARM64'105 #if '64' in insn_id:106 # is64bit = '1'107 #else:108 # is64bit = '0'109 # first, try to find this entry in old MappingInsn.inc file110 for i in range(len(mapping)):111 tmp = mapping[i].split(',')112 if tmp[0].strip() == insn:113 if not mnem_can_be_wrong:114 print('''115{116\t%s, %s_INS_%s,117#ifndef CAPSTONE_DIET118\t%s119#endif120},'''% (insn, arch1, mnem, mapping[i + 2].strip()))121 else: # ATTENTION: mnem can be wrong122 if not tmp[1].endswith(mnem):123 #print("======== cannot find %s, mapping to %s (instead of %s)" %(insn, tmp[1].strip(), mnem))124 pass125 print('''126{127\t%s, %s,128#ifndef CAPSTONE_DIET129\t%s130#endif131},'''% (insn, tmp[1].strip(), mapping[i + 2].strip()))132 return133 if mnem_can_be_wrong:134 #print("======== CANNOT FIND %s, mapping to %s" %(insn, mnem))135 return136 pass137 # this insn does not exist in mapping table138 print('''139{140\t%s, %s_INS_%s,141#ifndef CAPSTONE_DIET142\t{ 0 }, { 0 }, { 0 }, 0, 0143#endif144},'''% (insn, arch1, mnem))145# extract from GenInstrInfo.inc, because the insn id is in order146enum_count = 0147meet_insn = False148f = open(sys.argv[2])149lines = f.readlines()150f.close()151count = 0152last_mnem = None153# 1st enum is register enum154for line in lines:155 line = line.rstrip()156 if len(line.strip()) == 0:157 continue158 # skip pseudo instructions159 if len(line.strip()) == 0:160 continue161 if line.strip() == 'enum {':162 enum_count += 1163 #print(line.strip())164 continue165 line = line.strip()166 if enum_count == 1:167 # skip pseudo instructions168 if '__' in line or 'setjmp' in line or 'longjmp' in line or 'Pseudo' in line:169 continue170 elif 'INSTRUCTION_LIST_END' in line:171 break172 else:173 insn = line.split('=')[0].strip()174 '''175 insn = None176 if meet_insn:177 # enum items178 insn = line.split('=')[0].strip()179 if 'CALLSTACK' in insn or 'TAILJUMP' in insn:180 # pseudo instruction181 insn = None182 elif line.startswith(first_insn):183 insn = line.split('=')[0].strip()184 meet_insn = True185 if insn:186 count += 1187 if insn == 'BSWAP16r_BAD':188 last_mnem = 'BSWAP'189 print_entry(arch.upper(), insn, last_mnem, mapping, False)190 elif insn == 'CMOVNP_Fp32':191 last_mnem = 'FCMOVNP'192 print_entry(arch.upper(), insn, last_mnem, mapping, False)193 elif insn == 'CMOVP_Fp3':194 last_mnem = 'FCMOVP'195 print_entry(arch.upper(), insn, last_mnem, mapping, False)196 elif insn == 'CMPSDrm_Int':197 last_mnem = 'CMPSD'198 print_entry(arch.upper(), insn, last_mnem, mapping, False)199 elif insn == 'MOVSX16rm16':200 last_mnem = 'MOVSX'201 print_entry(arch.upper(), insn, last_mnem, mapping, False)202 elif insn == 'MOVZX16rm16':203 last_mnem = 'MOVZX'204 print_entry(arch.upper(), insn, last_mnem, mapping, False)205 elif insn == 'ST_Fp32m':206 last_mnem = 'FST'207 print_entry(arch.upper(), insn, last_mnem, mapping, False)208 elif insn == 'CMOVNP_Fp64':209 last_mnem = 'FCMOVNU'210 print_entry(arch.upper(), insn, last_mnem, mapping, False)211 elif insn == 'CMPSDrr_Int':212 last_mnem = 'CMPSD'213 print_entry(arch.upper(), insn, last_mnem, mapping, False)214 elif insn == 'CMPSSrm_Int':215 last_mnem = 'CMPSS'216 print_entry(arch.upper(), insn, last_mnem, mapping, False)217 elif insn == 'VCMPSDrm_Int':218 last_mnem = 'VCMPSD'219 print_entry(arch.upper(), insn, last_mnem, mapping, False)220 elif insn == 'VCMPSSrm_Int':221 last_mnem = 'VCMPSS'222 print_entry(arch.upper(), insn, last_mnem, mapping, False)223 elif insn == 'VPCMOVYrrr_REV':224 last_mnem = 'VPCMOV'225 print_entry(arch.upper(), insn, last_mnem, mapping, False)226 elif insn == 'VRNDSCALESDZm':227 last_mnem = 'VRNDSCALESD'228 print_entry(arch.upper(), insn, last_mnem, mapping, False)229 elif insn == 'VRNDSCALESSZm':230 last_mnem = 'VRNDSCALESS'231 print_entry(arch.upper(), insn, last_mnem, mapping, False)232 elif insn == 'VMAXCPDZ128rm':233 last_mnem = 'VMAXPD'234 print_entry(arch.upper(), insn, last_mnem, mapping, False)235 elif insn == 'VMAXCPSZ128rm':236 last_mnem = 'VMAXPS'237 print_entry(arch.upper(), insn, last_mnem, mapping, False)238 elif insn == 'VMAXCSDZrm':239 last_mnem = 'VMAXSD'240 print_entry(arch.upper(), insn, last_mnem, mapping, False)241 elif insn == 'VMAXCSSZrm':242 last_mnem = 'VMAXSS'243 print_entry(arch.upper(), insn, last_mnem, mapping, False)244 elif insn == 'VMINCPDZ128rm':245 last_mnem = 'VMINPD'246 print_entry(arch.upper(), insn, last_mnem, mapping, False)247 elif insn == 'VMINCPSZ128rm':248 last_mnem = 'VMINPS'249 print_entry(arch.upper(), insn, last_mnem, mapping, False)250 elif insn == 'VMINCSDZrm':251 last_mnem = 'VMINSD'252 print_entry(arch.upper(), insn, last_mnem, mapping, False)253 elif insn == 'VMINCSSZrm':254 last_mnem = 'VMINSS'255 print_entry(arch.upper(), insn, last_mnem, mapping, False)256 elif insn == 'VMOV64toPQIZrm':257 last_mnem = 'VMOVQ'258 print_entry(arch.upper(), insn, last_mnem, mapping, False)259 elif insn == 'VPERMIL2PDYrr_REV':260 last_mnem = 'VPERMILPD'261 print_entry(arch.upper(), insn, last_mnem, mapping, False)262 elif insn == 'VPERMIL2PSYrr_REV':263 last_mnem = 'VPERMILPS'264 print_entry(arch.upper(), insn, last_mnem, mapping, False)265 elif insn == 'VCVTSD2SI64Zrm_Int':266 last_mnem = 'VCVTSD2SI'267 print_entry(arch.upper(), insn, last_mnem, mapping, False)268 elif insn == 'VCVTSD2SSrm_Int':269 last_mnem = 'VCVTSD2SS'270 print_entry(arch.upper(), insn, last_mnem, mapping, False)271 elif insn == 'VCVTSS2SI64Zrm_Int':272 last_mnem = 'VCVTSS2SI'273 print_entry(arch.upper(), insn, last_mnem, mapping, False)274 elif insn == 'VCVTTSD2SI64Zrm_Int':275 last_mnem = 'VCVTTSD2SI'276 print_entry(arch.upper(), insn, last_mnem, mapping, False)277 elif insn == 'VCVTTSS2SI64Zrm_Int':278 last_mnem = 'VCVTTSS2SI'279 print_entry(arch.upper(), insn, last_mnem, mapping, False)280 elif insn.startswith('VFMSUBADD'):281 if insn[len('VFMSUBADD')].isdigit():282 last_mnem = insn[:len('VFMSUBADD123xy')]283 else:284 last_mnem = insn[:len('VFMSUBADDSS')]285 print_entry(arch.upper(), insn, last_mnem, mapping, False)286 elif insn.startswith('VFMADDSUB'):287 if insn[len('VFMADDSUB')].isdigit():288 last_mnem = insn[:len('VFMADDSUB123xy')]289 else:290 last_mnem = insn[:len('VFMADDSUBSS')]291 print_entry(arch.upper(), insn, last_mnem, mapping, False)292 elif insn.startswith('VFMADD'):293 if insn[len('VFMADD')].isdigit():294 last_mnem = insn[:len('VFMADD123PD')]295 else:296 last_mnem = insn[:len('VFMADDPD')]297 print_entry(arch.upper(), insn, last_mnem, mapping, False)298 elif insn.startswith('VFMSUB'):299 if insn[len('VFMSUB')].isdigit():300 last_mnem = insn[:len('VFMSUB123PD')]301 else:302 last_mnem = insn[:len('VFMSUBPD')]303 print_entry(arch.upper(), insn, last_mnem, mapping, False)304 elif insn.startswith('VFNMADD'):305 if insn[len('VFNMADD')].isdigit():306 last_mnem = insn[:len('VFNMADD123xy')]307 else:308 last_mnem = insn[:len('VFNMADDSS')]309 print_entry(arch.upper(), insn, last_mnem, mapping, False)310 elif insn.startswith('VFNMSUB'):311 if insn[len('VFNMSUB')].isdigit():312 last_mnem = insn[:len('VFNMSUB123xy')]313 else:314 last_mnem = insn[:len('VFNMSUBSS')]315 print_entry(arch.upper(), insn, last_mnem, mapping, False)316 '''317 if insn in insn_id_list:318 # trust old mapping table319 last_mnem = insn_id_list[insn].upper()320 print_entry(arch, insn, insn_id_list[insn].upper(), mapping, False)321 else:322 # the last option when we cannot find mnem: use the last good mnem...
insn.py
Source:insn.py
...93##ifndef CAPSTONE_DIET94# { 0 }, { 0 }, { X86_GRP_NOT64BITMODE, 0 }, 0, 095##endif96#},97def print_entry(arch, insn_id, mnem, mapping, mnem_can_be_wrong):98 print(arch, insn_id, mnem, mnem_can_be_wrong)99 if not mnem_can_be_wrong:100 insn = "%s_INS_%s" %(arch.upper(), mnem.upper())101 if insn in insn_list:102 return103 print("%s," %insn)104 insn_list.append(insn)105 return106 insn = "%s_%s" %(arch.upper(), insn_id)107 # so mnem can be wrong, we need to verify with MappingInsn.inc108 # first, try to find this entry in old MappingInsn.inc file109 for i in range(len(mapping)):110 tmp = mapping[i].split(',')111 if tmp[0].strip() == insn:112 insn = tmp[1].strip()113 if insn in insn_list:114 return115 #print("==== get below from MappingInsn.inc file: %s" %insn)116 print("%s," %insn)117 insn_list.append(insn)118 return119# extract from GenInstrInfo.inc, because the insn id is in order120enum_count = 0121meet_insn = False122# GenInstrInfo.inc123f = open(sys.argv[2])124lines = f.readlines()125f.close()126count = 0127last_mnem = None128# 1st enum is register enum129for line in lines:130 line = line.rstrip()131 if len(line.strip()) == 0:132 continue133 if line.strip() == 'enum {':134 enum_count += 1135 #print(line.strip())136 continue137 line = line.strip()138 if enum_count == 1:139 if 'INSTRUCTION_LIST_END' in line:140 break141 else:142 insn = None143 if meet_insn:144 # enum items145 insn = line.split('=')[0].strip()146 if 'CALLSTACK' in insn or 'TAILJUMP' in insn:147 # pseudo instruction148 insn = None149 elif line.startswith(first_insn):150 insn = line.split('=')[0].strip()151 meet_insn = True152 if insn:153 count += 1154 if insn == 'BSWAP16r_BAD':155 last_mnem = 'BSWAP'156 print_entry(arch.upper(), insn, last_mnem, mapping, False)157 elif insn == 'CMOVNP_Fp32':158 last_mnem = 'FCMOVNP'159 print_entry(arch.upper(), insn, last_mnem, mapping, False)160 elif insn == 'CMOVP_Fp3':161 last_mnem = 'FCMOVP'162 print_entry(arch.upper(), insn, last_mnem, mapping, False)163 elif insn == 'CMPSDrm_Int':164 last_mnem = 'CMPSD'165 print_entry(arch.upper(), insn, last_mnem, mapping, False)166 elif insn == 'MOVSX16rm16':167 last_mnem = 'MOVSX'168 print_entry(arch.upper(), insn, last_mnem, mapping, False)169 elif insn == 'MOVZX16rm16':170 last_mnem = 'MOVZX'171 print_entry(arch.upper(), insn, last_mnem, mapping, False)172 elif insn == 'ST_Fp32m':173 last_mnem = 'FST'174 print_entry(arch.upper(), insn, last_mnem, mapping, False)175 elif insn == 'CMOVNP_Fp64':176 last_mnem = 'FCMOVNU'177 print_entry(arch.upper(), insn, last_mnem, mapping, False)178 elif insn == 'CMPSDrr_Int':179 last_mnem = 'CMPSD'180 print_entry(arch.upper(), insn, last_mnem, mapping, False)181 elif insn == 'CMPSSrm_Int':182 last_mnem = 'CMPSS'183 print_entry(arch.upper(), insn, last_mnem, mapping, False)184 elif insn == 'VCMPSDrm_Int':185 last_mnem = 'VCMPSD'186 print_entry(arch.upper(), insn, last_mnem, mapping, False)187 elif insn == 'VCMPSSrm_Int':188 last_mnem = 'VCMPSS'189 print_entry(arch.upper(), insn, last_mnem, mapping, False)190 elif insn == 'VPCMOVYrrr_REV':191 last_mnem = 'VPCMOV'192 print_entry(arch.upper(), insn, last_mnem, mapping, False)193 elif insn == 'VRNDSCALESDZm':194 last_mnem = 'VRNDSCALESD'195 print_entry(arch.upper(), insn, last_mnem, mapping, False)196 elif insn == 'VRNDSCALESSZm':197 last_mnem = 'VRNDSCALESS'198 print_entry(arch.upper(), insn, last_mnem, mapping, False)199 elif insn == 'VMAXCPDZ128rm':200 last_mnem = 'VMAXPD'201 print_entry(arch.upper(), insn, last_mnem, mapping, False)202 elif insn == 'VMAXCPSZ128rm':203 last_mnem = 'VMAXPS'204 print_entry(arch.upper(), insn, last_mnem, mapping, False)205 elif insn == 'VMAXCSDZrm':206 last_mnem = 'VMAXSD'207 print_entry(arch.upper(), insn, last_mnem, mapping, False)208 elif insn == 'VMAXCSSZrm':209 last_mnem = 'VMAXSS'210 print_entry(arch.upper(), insn, last_mnem, mapping, False)211 elif insn == 'VMINCPDZ128rm':212 last_mnem = 'VMINPD'213 print_entry(arch.upper(), insn, last_mnem, mapping, False)214 elif insn == 'VMINCPSZ128rm':215 last_mnem = 'VMINPS'216 print_entry(arch.upper(), insn, last_mnem, mapping, False)217 elif insn == 'VMINCSDZrm':218 last_mnem = 'VMINSD'219 print_entry(arch.upper(), insn, last_mnem, mapping, False)220 elif insn == 'VMINCSSZrm':221 last_mnem = 'VMINSS'222 print_entry(arch.upper(), insn, last_mnem, mapping, False)223 elif insn == 'VMOV64toPQIZrm':224 last_mnem = 'VMOVQ'225 print_entry(arch.upper(), insn, last_mnem, mapping, False)226 elif insn == 'VPERMIL2PDYrr_REV':227 last_mnem = 'VPERMILPD'228 print_entry(arch.upper(), insn, last_mnem, mapping, False)229 elif insn == 'VPERMIL2PSYrr_REV':230 last_mnem = 'VPERMILPS'231 print_entry(arch.upper(), insn, last_mnem, mapping, False)232 elif insn == 'VCVTSD2SI64Zrm_Int':233 last_mnem = 'VCVTSD2SI'234 print_entry(arch.upper(), insn, last_mnem, mapping, False)235 elif insn == 'VCVTSD2SSrm_Int':236 last_mnem = 'VCVTSD2SS'237 print_entry(arch.upper(), insn, last_mnem, mapping, False)238 elif insn == 'VCVTSS2SI64Zrm_Int':239 last_mnem = 'VCVTSS2SI'240 print_entry(arch.upper(), insn, last_mnem, mapping, False)241 elif insn == 'VCVTTSD2SI64Zrm_Int':242 last_mnem = 'VCVTTSD2SI'243 print_entry(arch.upper(), insn, last_mnem, mapping, False)244 elif insn == 'VCVTTSS2SI64Zrm_Int':245 last_mnem = 'VCVTTSS2SI'246 print_entry(arch.upper(), insn, last_mnem, mapping, False)247 elif insn.startswith('VFMSUBADD'):248 if insn[len('VFMSUBADD')].isdigit():249 last_mnem = insn[:len('VFMSUBADD123xy')]250 else:251 last_mnem = insn[:len('VFMSUBADDSS')]252 print_entry(arch.upper(), insn, last_mnem, mapping, False)253 elif insn.startswith('VFMADDSUB'):254 if insn[len('VFMADDSUB')].isdigit():255 last_mnem = insn[:len('VFMADDSUB123xy')]256 else:257 last_mnem = insn[:len('VFMADDSUBSS')]258 print_entry(arch.upper(), insn, last_mnem, mapping, False)259 elif insn.startswith('VFMADD'):260 if insn[len('VFMADD')].isdigit():261 last_mnem = insn[:len('VFMADD123PD')]262 else:263 last_mnem = insn[:len('VFMADDPD')]264 print_entry(arch.upper(), insn, last_mnem, mapping, False)265 elif insn.startswith('VFMSUB'):266 if insn[len('VFMSUB')].isdigit():267 last_mnem = insn[:len('VFMSUB123PD')]268 else:269 last_mnem = insn[:len('VFMSUBPD')]270 print_entry(arch.upper(), insn, last_mnem, mapping, False)271 elif insn.startswith('VFNMADD'):272 if insn[len('VFNMADD')].isdigit():273 last_mnem = insn[:len('VFNMADD123xy')]274 else:275 last_mnem = insn[:len('VFNMADDSS')]276 print_entry(arch.upper(), insn, last_mnem, mapping, False)277 elif insn.startswith('VFNMSUB'):278 if insn[len('VFNMSUB')].isdigit():279 last_mnem = insn[:len('VFNMSUB123xy')]280 else:281 last_mnem = insn[:len('VFNMSUBSS')]282 print_entry(arch.upper(), insn, last_mnem, mapping, False)283 elif insn in insn_id_list:284 # trust old mapping table285 last_mnem = insn_id_list[insn].upper()286 print_entry(arch.upper(), insn, last_mnem, mapping, False)287 else:288 # the last option when we cannot find mnem: use the last good mnem...
mapping_insn.py
Source:mapping_insn.py
...81##ifndef CAPSTONE_DIET82# { 0 }, { 0 }, { X86_GRP_NOT64BITMODE, 0 }, 0, 083##endif84#},85def print_entry(arch, insn_id, mnem, mapping, mnem_can_be_wrong):86 insn = "%s_%s" %(arch.upper(), insn_id)87 if '64' in insn_id:88 is64bit = '1'89 else:90 is64bit = '0'91 # first, try to find this entry in old MappingInsn.inc file92 for i in range(len(mapping)):93 tmp = mapping[i].split(',')94 if tmp[0].strip() == insn:95 if not mnem_can_be_wrong:96 print('''97{98\t%s_%s, %s_INS_%s, %s,99#ifndef CAPSTONE_DIET100\t%s101#endif102},'''% (arch, insn_id, arch, mnem, is64bit, mapping[i + 2].strip()))103 else:104 if not tmp[1].endswith(mnem):105 #print("======== cannot find %s, mapping to %s (instead of %s)" %(insn, tmp[1].strip(), mnem))106 pass107 print('''108{109\t%s_%s, %s, %s,110#ifndef CAPSTONE_DIET111\t%s112#endif113},'''% (arch, insn_id, tmp[1].strip(), is64bit, mapping[i + 2].strip()))114 return115 if mnem_can_be_wrong:116 #print("======== CANNOT FIND %s, mapping to %s" %(insn, mnem))117 pass118 print('''119{120\t%s_%s, %s_INS_%s, %s,121#ifndef CAPSTONE_DIET122\t{ 0 }, { 0 }, { 0 }, 0, 0123#endif124},'''% (arch, insn_id, arch, mnem, is64bit))125# extract from GenInstrInfo.inc, because the insn id is in order126enum_count = 0127meet_insn = False128f = open(sys.argv[2])129lines = f.readlines()130f.close()131count = 0132last_mnem = None133# 1st enum is register enum134for line in lines:135 line = line.rstrip()136 if len(line.strip()) == 0:137 continue138 if line.strip() == 'enum {':139 enum_count += 1140 #print(line.strip())141 continue142 line = line.strip()143 if enum_count == 1:144 if 'INSTRUCTION_LIST_END' in line:145 break146 else:147 insn = None148 if meet_insn:149 # enum items150 insn = line.split('=')[0].strip()151 if 'CALLSTACK' in insn or 'TAILJUMP' in insn:152 # pseudo instruction153 insn = None154 elif line.startswith(first_insn):155 insn = line.split('=')[0].strip()156 meet_insn = True157 if insn:158 count += 1159 if insn == 'BSWAP16r_BAD':160 last_mnem = 'BSWAP'161 print_entry(arch.upper(), insn, last_mnem, mapping, False)162 elif insn == 'CMOVNP_Fp32':163 last_mnem = 'FCMOVNP'164 print_entry(arch.upper(), insn, last_mnem, mapping, False)165 elif insn == 'CMOVP_Fp3':166 last_mnem = 'FCMOVP'167 print_entry(arch.upper(), insn, last_mnem, mapping, False)168 elif insn == 'CMPSDrm_Int':169 last_mnem = 'CMPSD'170 print_entry(arch.upper(), insn, last_mnem, mapping, False)171 elif insn == 'MOVSX16rm16':172 last_mnem = 'MOVSX'173 print_entry(arch.upper(), insn, last_mnem, mapping, False)174 elif insn == 'MOVZX16rm16':175 last_mnem = 'MOVZX'176 print_entry(arch.upper(), insn, last_mnem, mapping, False)177 elif insn == 'ST_Fp32m':178 last_mnem = 'FST'179 print_entry(arch.upper(), insn, last_mnem, mapping, False)180 elif insn == 'CMOVNP_Fp64':181 last_mnem = 'FCMOVNU'182 print_entry(arch.upper(), insn, last_mnem, mapping, False)183 elif insn == 'CMPSDrr_Int':184 last_mnem = 'CMPSD'185 print_entry(arch.upper(), insn, last_mnem, mapping, False)186 elif insn == 'CMPSSrm_Int':187 last_mnem = 'CMPSS'188 print_entry(arch.upper(), insn, last_mnem, mapping, False)189 elif insn == 'VCMPSDrm_Int':190 last_mnem = 'VCMPSD'191 print_entry(arch.upper(), insn, last_mnem, mapping, False)192 elif insn == 'VCMPSSrm_Int':193 last_mnem = 'VCMPSS'194 print_entry(arch.upper(), insn, last_mnem, mapping, False)195 elif insn == 'VPCMOVYrrr_REV':196 last_mnem = 'VPCMOV'197 print_entry(arch.upper(), insn, last_mnem, mapping, False)198 elif insn == 'VRNDSCALESDZm':199 last_mnem = 'VRNDSCALESD'200 print_entry(arch.upper(), insn, last_mnem, mapping, False)201 elif insn == 'VRNDSCALESSZm':202 last_mnem = 'VRNDSCALESS'203 print_entry(arch.upper(), insn, last_mnem, mapping, False)204 elif insn == 'VMAXCPDZ128rm':205 last_mnem = 'VMAXPD'206 print_entry(arch.upper(), insn, last_mnem, mapping, False)207 elif insn == 'VMAXCPSZ128rm':208 last_mnem = 'VMAXPS'209 print_entry(arch.upper(), insn, last_mnem, mapping, False)210 elif insn == 'VMAXCSDZrm':211 last_mnem = 'VMAXSD'212 print_entry(arch.upper(), insn, last_mnem, mapping, False)213 elif insn == 'VMAXCSSZrm':214 last_mnem = 'VMAXSS'215 print_entry(arch.upper(), insn, last_mnem, mapping, False)216 elif insn == 'VMINCPDZ128rm':217 last_mnem = 'VMINPD'218 print_entry(arch.upper(), insn, last_mnem, mapping, False)219 elif insn == 'VMINCPSZ128rm':220 last_mnem = 'VMINPS'221 print_entry(arch.upper(), insn, last_mnem, mapping, False)222 elif insn == 'VMINCSDZrm':223 last_mnem = 'VMINSD'224 print_entry(arch.upper(), insn, last_mnem, mapping, False)225 elif insn == 'VMINCSSZrm':226 last_mnem = 'VMINSS'227 print_entry(arch.upper(), insn, last_mnem, mapping, False)228 elif insn == 'VMOV64toPQIZrm':229 last_mnem = 'VMOVQ'230 print_entry(arch.upper(), insn, last_mnem, mapping, False)231 elif insn == 'VPERMIL2PDYrr_REV':232 last_mnem = 'VPERMILPD'233 print_entry(arch.upper(), insn, last_mnem, mapping, False)234 elif insn == 'VPERMIL2PSYrr_REV':235 last_mnem = 'VPERMILPS'236 print_entry(arch.upper(), insn, last_mnem, mapping, False)237 elif insn == 'VCVTSD2SI64Zrm_Int':238 last_mnem = 'VCVTSD2SI'239 print_entry(arch.upper(), insn, last_mnem, mapping, False)240 elif insn == 'VCVTSD2SSrm_Int':241 last_mnem = 'VCVTSD2SS'242 print_entry(arch.upper(), insn, last_mnem, mapping, False)243 elif insn == 'VCVTSS2SI64Zrm_Int':244 last_mnem = 'VCVTSS2SI'245 print_entry(arch.upper(), insn, last_mnem, mapping, False)246 elif insn == 'VCVTTSD2SI64Zrm_Int':247 last_mnem = 'VCVTTSD2SI'248 print_entry(arch.upper(), insn, last_mnem, mapping, False)249 elif insn == 'VCVTTSS2SI64Zrm_Int':250 last_mnem = 'VCVTTSS2SI'251 print_entry(arch.upper(), insn, last_mnem, mapping, False)252 elif insn.startswith('VFMSUBADD'):253 if insn[len('VFMSUBADD')].isdigit():254 last_mnem = insn[:len('VFMSUBADD123xy')]255 else:256 last_mnem = insn[:len('VFMSUBADDSS')]257 print_entry(arch.upper(), insn, last_mnem, mapping, False)258 elif insn.startswith('VFMADDSUB'):259 if insn[len('VFMADDSUB')].isdigit():260 last_mnem = insn[:len('VFMADDSUB123xy')]261 else:262 last_mnem = insn[:len('VFMADDSUBSS')]263 print_entry(arch.upper(), insn, last_mnem, mapping, False)264 elif insn.startswith('VFMADD'):265 if insn[len('VFMADD')].isdigit():266 last_mnem = insn[:len('VFMADD123PD')]267 else:268 last_mnem = insn[:len('VFMADDPD')]269 print_entry(arch.upper(), insn, last_mnem, mapping, False)270 elif insn.startswith('VFMSUB'):271 if insn[len('VFMSUB')].isdigit():272 last_mnem = insn[:len('VFMSUB123PD')]273 else:274 last_mnem = insn[:len('VFMSUBPD')]275 print_entry(arch.upper(), insn, last_mnem, mapping, False)276 elif insn.startswith('VFNMADD'):277 if insn[len('VFNMADD')].isdigit():278 last_mnem = insn[:len('VFNMADD123xy')]279 else:280 last_mnem = insn[:len('VFNMADDSS')]281 print_entry(arch.upper(), insn, last_mnem, mapping, False)282 elif insn.startswith('VFNMSUB'):283 if insn[len('VFNMSUB')].isdigit():284 last_mnem = insn[:len('VFNMSUB123xy')]285 else:286 last_mnem = insn[:len('VFNMSUBSS')]287 print_entry(arch.upper(), insn, last_mnem, mapping, False)288 elif insn in insn_id_list:289 # trust old mapping table290 last_mnem = insn_id_list[insn].upper()291 print_entry(arch.upper(), insn, insn_id_list[insn].upper(), mapping, False)292 else:293 # the last option when we cannot find mnem: use the last good mnem...
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!