Changeset 41790 in vbox for trunk/src/VBox
- Timestamp:
- Jun 16, 2012 8:33:45 PM (13 years ago)
- Location:
- trunk/src/VBox/Disassembler
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Disassembler/Disasm.cpp
r41789 r41790 43 43 * @todo Define output callback. 44 44 */ 45 DISDECL(int) DISInstrToStr(void const *pvInstr, DISCPUMODE enmCpuMode, PDIS CPUSTATE pDis, uint32_t *pcbInstr,45 DISDECL(int) DISInstrToStr(void const *pvInstr, DISCPUMODE enmCpuMode, PDISSTATE pDis, uint32_t *pcbInstr, 46 46 char *pszOutput, size_t cbOutput) 47 47 { … … 58 58 * @param pfnCallback The byte fetcher callback. 59 59 * @param pvUser The user argument (found in 60 * DIS CPUSTATE::pvUser).60 * DISSTATE::pvUser). 61 61 * @param pDis The disassembler state (output). 62 62 * @param pcbInstr Where to store the size of the instruction. NULL is … … 68 68 */ 69 69 DISDECL(int) DISInstrToStrWithReader(RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, PFNDISREADBYTES pfnReadBytes, void *pvUser, 70 PDIS CPUSTATE pDis, uint32_t *pcbInstr, char *pszOutput, size_t cbOutput)70 PDISSTATE pDis, uint32_t *pcbInstr, char *pszOutput, size_t cbOutput) 71 71 72 72 { … … 93 93 DISDECL(int) DISInstrToStrEx(RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, 94 94 PFNDISREADBYTES pfnReadBytes, void *pvUser, uint32_t uFilter, 95 PDIS CPUSTATE pDis, uint32_t *pcbInstr, char *pszOutput, size_t cbOutput)95 PDISSTATE pDis, uint32_t *pcbInstr, char *pszOutput, size_t cbOutput) 96 96 { 97 97 int rc = DISInstEx(uInstrAddr, enmCpuMode, uFilter, pfnReadBytes, pvUser, pDis, pcbInstr); -
trunk/src/VBox/Disassembler/DisasmCore.cpp
r41789 r41790 35 35 * Defined Constants And Macros * 36 36 *******************************************************************************/ 37 /** This must be less or equal to DIS CPUSTATE::abInstr. */37 /** This must be less or equal to DISSTATE::abInstr. */ 38 38 #define DIS_MAX_INSTR_LENGTH 16 39 39 … … 47 47 * Internal Functions * 48 48 *******************************************************************************/ 49 static void disasmModRMReg(PDIS CPUSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam, int fRegAddr);50 static void disasmModRMReg16(PDIS CPUSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam);51 static void disasmModRMSReg(PDIS CPUSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam);49 static void disasmModRMReg(PDISSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam, int fRegAddr); 50 static void disasmModRMReg16(PDISSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam); 51 static void disasmModRMSReg(PDISSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam); 52 52 53 53 … … 222 222 * @interface_method_impl{FNDISREADBYTES, The default byte reader callber.} 223 223 */ 224 static DECLCALLBACK(int) disReadBytesDefault(PDIS CPUSTATE pDis, uint8_t offInstr, uint8_t cbMinRead, uint8_t cbMaxRead)224 static DECLCALLBACK(int) disReadBytesDefault(PDISSTATE pDis, uint8_t offInstr, uint8_t cbMinRead, uint8_t cbMaxRead) 225 225 { 226 226 #ifdef IN_RING0 … … 245 245 246 246 /** 247 * Read more bytes into the DIS CPUSTATE::abInstr buffer, advance248 * DIS CPUSTATE::cbCachedInstr.247 * Read more bytes into the DISSTATE::abInstr buffer, advance 248 * DISSTATE::cbCachedInstr. 249 249 * 250 * Will set DIS CPUSTATE::rc on failure, but still advance cbCachedInstr.250 * Will set DISSTATE::rc on failure, but still advance cbCachedInstr. 251 251 * 252 * The caller shall fend off reads beyond the DIS CPUSTATE::abInstr buffer.252 * The caller shall fend off reads beyond the DISSTATE::abInstr buffer. 253 253 * 254 254 * @param pDis The disassembler state. … … 257 257 * satisfied. 258 258 */ 259 DECL_NO_INLINE(static, void) disReadMore(PDIS CPUSTATE pDis, uint8_t offInstr, uint8_t cbMin)259 DECL_NO_INLINE(static, void) disReadMore(PDISSTATE pDis, uint8_t offInstr, uint8_t cbMin) 260 260 { 261 261 Assert(cbMin + offInstr <= sizeof(pDis->abInstr)); … … 304 304 * instruction. 305 305 */ 306 DECL_NO_INLINE(static, uint8_t) disReadByteSlow(PDIS CPUSTATE pDis, size_t offInstr)306 DECL_NO_INLINE(static, uint8_t) disReadByteSlow(PDISSTATE pDis, size_t offInstr) 307 307 { 308 308 if (RT_UNLIKELY(offInstr >= DIS_MAX_INSTR_LENGTH)) … … 325 325 * @param uAddress The address. 326 326 */ 327 DECLINLINE(uint8_t) disReadByte(PDIS CPUSTATE pDis, size_t offInstr)327 DECLINLINE(uint8_t) disReadByte(PDISSTATE pDis, size_t offInstr) 328 328 { 329 329 if (RT_UNLIKELY(offInstr >= pDis->cbCachedInstr)) … … 342 342 * instruction. 343 343 */ 344 DECL_NO_INLINE(static, uint16_t) disReadWordSlow(PDIS CPUSTATE pDis, size_t offInstr)344 DECL_NO_INLINE(static, uint16_t) disReadWordSlow(PDISSTATE pDis, size_t offInstr) 345 345 { 346 346 if (RT_UNLIKELY(offInstr + 2 > DIS_MAX_INSTR_LENGTH)) … … 370 370 * instruction. 371 371 */ 372 DECLINLINE(uint16_t) disReadWord(PDIS CPUSTATE pDis, size_t offInstr)372 DECLINLINE(uint16_t) disReadWord(PDISSTATE pDis, size_t offInstr) 373 373 { 374 374 if (RT_UNLIKELY(offInstr + 2 > pDis->cbCachedInstr)) … … 391 391 * instruction. 392 392 */ 393 DECL_NO_INLINE(static, uint32_t) disReadDWordSlow(PDIS CPUSTATE pDis, size_t offInstr)393 DECL_NO_INLINE(static, uint32_t) disReadDWordSlow(PDISSTATE pDis, size_t offInstr) 394 394 { 395 395 if (RT_UNLIKELY(offInstr + 4 > DIS_MAX_INSTR_LENGTH)) … … 427 427 * instruction. 428 428 */ 429 DECLINLINE(uint32_t) disReadDWord(PDIS CPUSTATE pDis, size_t offInstr)429 DECLINLINE(uint32_t) disReadDWord(PDISSTATE pDis, size_t offInstr) 430 430 { 431 431 if (RT_UNLIKELY(offInstr + 4 > pDis->cbCachedInstr)) … … 449 449 * instruction. 450 450 */ 451 DECL_NO_INLINE(static, uint64_t) disReadQWordSlow(PDIS CPUSTATE pDis, size_t offInstr)451 DECL_NO_INLINE(static, uint64_t) disReadQWordSlow(PDISSTATE pDis, size_t offInstr) 452 452 { 453 453 if (RT_UNLIKELY(offInstr + 8 > DIS_MAX_INSTR_LENGTH)) … … 500 500 * @param uAddress The address. 501 501 */ 502 DECLINLINE(uint64_t) disReadQWord(PDIS CPUSTATE pDis, size_t offInstr)502 DECLINLINE(uint64_t) disReadQWord(PDISSTATE pDis, size_t offInstr) 503 503 { 504 504 if (RT_UNLIKELY(offInstr + 8 > pDis->cbCachedInstr)) … … 519 519 //***************************************************************************** 520 520 //***************************************************************************** 521 static size_t disParseInstruction(size_t offInstr, PCDISOPCODE pOp, PDIS CPUSTATE pDis)521 static size_t disParseInstruction(size_t offInstr, PCDISOPCODE pOp, PDISSTATE pDis) 522 522 { 523 523 size_t size = 0; … … 591 591 /* Floating point opcode parsing */ 592 592 //***************************************************************************** 593 static size_t ParseEscFP(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)593 static size_t ParseEscFP(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 594 594 { 595 595 int index; … … 656 656 // Scale Index Base 657 657 //***************************************************************************** 658 static void UseSIB(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)658 static void UseSIB(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 659 659 { 660 660 NOREF(offInstr); NOREF(pOp); … … 705 705 //***************************************************************************** 706 706 //***************************************************************************** 707 static size_t ParseSIB(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)707 static size_t ParseSIB(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 708 708 { 709 709 unsigned size = sizeof(uint8_t); … … 738 738 //***************************************************************************** 739 739 //***************************************************************************** 740 static size_t ParseSIB_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)740 static size_t ParseSIB_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 741 741 { 742 742 unsigned size = sizeof(uint8_t); … … 771 771 // Mod Reg/Opcode R/M 772 772 //***************************************************************************** 773 static size_t UseModRM(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)773 static size_t UseModRM(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 774 774 { 775 775 unsigned vtype = OP_PARM_VTYPE(pParam->fParam); … … 948 948 // Query the size of the ModRM parameters and fetch the immediate data (if any) 949 949 //***************************************************************************** 950 static size_t QueryModRM(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis, size_t *pSibInc)950 static size_t QueryModRM(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis, size_t *pSibInc) 951 951 { 952 952 size_t sibinc; … … 1031 1031 // Query the size of the ModRM parameters and fetch the immediate data (if any) 1032 1032 //***************************************************************************** 1033 static size_t QueryModRM_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis, size_t *pSibInc)1033 static size_t QueryModRM_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis, size_t *pSibInc) 1034 1034 { 1035 1035 size_t sibinc; … … 1106 1106 //***************************************************************************** 1107 1107 //***************************************************************************** 1108 static size_t ParseIllegal(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1108 static size_t ParseIllegal(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1109 1109 { 1110 1110 NOREF(offInstr); NOREF(pOp); NOREF(pParam); NOREF(pDis); … … 1114 1114 //***************************************************************************** 1115 1115 //***************************************************************************** 1116 static size_t ParseModRM(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1116 static size_t ParseModRM(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1117 1117 { 1118 1118 size_t size = sizeof(uint8_t); //ModRM byte … … 1160 1160 //***************************************************************************** 1161 1161 //***************************************************************************** 1162 static size_t ParseModRM_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1162 static size_t ParseModRM_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1163 1163 { 1164 1164 size_t size = sizeof(uint8_t); //ModRM byte … … 1207 1207 //***************************************************************************** 1208 1208 //***************************************************************************** 1209 static size_t ParseModFence(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1209 static size_t ParseModFence(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1210 1210 { 1211 1211 ////AssertMsgFailed(("??\n")); … … 1216 1216 //***************************************************************************** 1217 1217 //***************************************************************************** 1218 static size_t ParseImmByte(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1218 static size_t ParseImmByte(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1219 1219 { 1220 1220 NOREF(pOp); … … 1226 1226 //***************************************************************************** 1227 1227 //***************************************************************************** 1228 static size_t ParseImmByte_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1228 static size_t ParseImmByte_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1229 1229 { 1230 1230 NOREF(offInstr); NOREF(pOp); NOREF(pParam); NOREF(pDis); … … 1233 1233 //***************************************************************************** 1234 1234 //***************************************************************************** 1235 static size_t ParseImmByteSX(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1235 static size_t ParseImmByteSX(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1236 1236 { 1237 1237 NOREF(pOp); … … 1259 1259 //***************************************************************************** 1260 1260 //***************************************************************************** 1261 static size_t ParseImmByteSX_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1261 static size_t ParseImmByteSX_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1262 1262 { 1263 1263 NOREF(offInstr); NOREF(pOp); NOREF(pParam); NOREF(pDis); … … 1266 1266 //***************************************************************************** 1267 1267 //***************************************************************************** 1268 static size_t ParseImmUshort(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1268 static size_t ParseImmUshort(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1269 1269 { 1270 1270 NOREF(pOp); … … 1276 1276 //***************************************************************************** 1277 1277 //***************************************************************************** 1278 static size_t ParseImmUshort_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1278 static size_t ParseImmUshort_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1279 1279 { 1280 1280 NOREF(offInstr); NOREF(pOp); NOREF(pParam); NOREF(pDis); … … 1283 1283 //***************************************************************************** 1284 1284 //***************************************************************************** 1285 static size_t ParseImmUlong(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1285 static size_t ParseImmUlong(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1286 1286 { 1287 1287 NOREF(pOp); … … 1293 1293 //***************************************************************************** 1294 1294 //***************************************************************************** 1295 static size_t ParseImmUlong_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1295 static size_t ParseImmUlong_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1296 1296 { 1297 1297 NOREF(offInstr); NOREF(pOp); NOREF(pParam); NOREF(pDis); … … 1300 1300 //***************************************************************************** 1301 1301 //***************************************************************************** 1302 static size_t ParseImmQword(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1302 static size_t ParseImmQword(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1303 1303 { 1304 1304 NOREF(pOp); … … 1310 1310 //***************************************************************************** 1311 1311 //***************************************************************************** 1312 static size_t ParseImmQword_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1312 static size_t ParseImmQword_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1313 1313 { 1314 1314 NOREF(offInstr); NOREF(pOp); NOREF(pParam); NOREF(pDis); … … 1317 1317 //***************************************************************************** 1318 1318 //***************************************************************************** 1319 static size_t ParseImmV(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1319 static size_t ParseImmV(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1320 1320 { 1321 1321 NOREF(pOp); … … 1343 1343 //***************************************************************************** 1344 1344 //***************************************************************************** 1345 static size_t ParseImmV_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1345 static size_t ParseImmV_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1346 1346 { 1347 1347 NOREF(offInstr); NOREF(pOp); NOREF(pParam); … … 1354 1354 //***************************************************************************** 1355 1355 //***************************************************************************** 1356 static size_t ParseImmZ(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1356 static size_t ParseImmZ(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1357 1357 { 1358 1358 NOREF(pOp); … … 1383 1383 //***************************************************************************** 1384 1384 //***************************************************************************** 1385 static size_t ParseImmZ_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1385 static size_t ParseImmZ_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1386 1386 { 1387 1387 NOREF(offInstr); NOREF(pOp); NOREF(pParam); … … 1395 1395 // Relative displacement for branches (rel. to next instruction) 1396 1396 //***************************************************************************** 1397 static size_t ParseImmBRel(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1397 static size_t ParseImmBRel(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1398 1398 { 1399 1399 NOREF(pOp); … … 1406 1406 // Relative displacement for branches (rel. to next instruction) 1407 1407 //***************************************************************************** 1408 static size_t ParseImmBRel_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1408 static size_t ParseImmBRel_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1409 1409 { 1410 1410 NOREF(offInstr); NOREF(pOp); NOREF(pParam); NOREF(pDis); … … 1414 1414 // Relative displacement for branches (rel. to next instruction) 1415 1415 //***************************************************************************** 1416 static size_t ParseImmVRel(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1416 static size_t ParseImmVRel(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1417 1417 { 1418 1418 NOREF(pOp); … … 1442 1442 // Relative displacement for branches (rel. to next instruction) 1443 1443 //***************************************************************************** 1444 static size_t ParseImmVRel_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1444 static size_t ParseImmVRel_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1445 1445 { 1446 1446 NOREF(offInstr); NOREF(pOp); NOREF(pParam); … … 1452 1452 //***************************************************************************** 1453 1453 //***************************************************************************** 1454 static size_t ParseImmAddr(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1454 static size_t ParseImmAddr(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1455 1455 { 1456 1456 if (pDis->uAddrMode == DISCPUMODE_32BIT) … … 1514 1514 //***************************************************************************** 1515 1515 //***************************************************************************** 1516 static size_t ParseImmAddr_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1516 static size_t ParseImmAddr_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1517 1517 { 1518 1518 NOREF(offInstr); NOREF(pOp); … … 1547 1547 //***************************************************************************** 1548 1548 //***************************************************************************** 1549 static size_t ParseImmAddrF(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1549 static size_t ParseImmAddrF(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1550 1550 { 1551 1551 // immediate far pointers - only 16:16 or 16:32; determined by operand, *not* address size! … … 1570 1570 //***************************************************************************** 1571 1571 //***************************************************************************** 1572 static size_t ParseImmAddrF_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1572 static size_t ParseImmAddrF_SizeOnly(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1573 1573 { 1574 1574 NOREF(offInstr); NOREF(pOp); … … 1589 1589 //***************************************************************************** 1590 1590 //***************************************************************************** 1591 static size_t ParseFixedReg(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1591 static size_t ParseFixedReg(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1592 1592 { 1593 1593 NOREF(offInstr); … … 1690 1690 //***************************************************************************** 1691 1691 //***************************************************************************** 1692 static size_t ParseXv(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1692 static size_t ParseXv(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1693 1693 { 1694 1694 NOREF(offInstr); … … 1715 1715 //***************************************************************************** 1716 1716 //***************************************************************************** 1717 static size_t ParseXb(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1717 static size_t ParseXb(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1718 1718 { 1719 1719 NOREF(offInstr); NOREF(pOp); … … 1740 1740 //***************************************************************************** 1741 1741 //***************************************************************************** 1742 static size_t ParseYv(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1742 static size_t ParseYv(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1743 1743 { 1744 1744 NOREF(offInstr); … … 1765 1765 //***************************************************************************** 1766 1766 //***************************************************************************** 1767 static size_t ParseYb(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1767 static size_t ParseYb(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1768 1768 { 1769 1769 NOREF(offInstr); NOREF(pOp); … … 1790 1790 //***************************************************************************** 1791 1791 //***************************************************************************** 1792 static size_t ParseTwoByteEsc(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1792 static size_t ParseTwoByteEsc(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1793 1793 { 1794 1794 PCDISOPCODE pOpcode; … … 1849 1849 //***************************************************************************** 1850 1850 //***************************************************************************** 1851 static size_t ParseThreeByteEsc4(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1851 static size_t ParseThreeByteEsc4(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1852 1852 { 1853 1853 PCDISOPCODE pOpcode; … … 1910 1910 //***************************************************************************** 1911 1911 //***************************************************************************** 1912 static size_t ParseThreeByteEsc5(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1912 static size_t ParseThreeByteEsc5(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1913 1913 { 1914 1914 PCDISOPCODE pOpcode; … … 1945 1945 //***************************************************************************** 1946 1946 //***************************************************************************** 1947 static size_t ParseNopPause(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1947 static size_t ParseNopPause(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1948 1948 { 1949 1949 size_t size = 0; … … 1963 1963 //***************************************************************************** 1964 1964 //***************************************************************************** 1965 static size_t ParseImmGrpl(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1965 static size_t ParseImmGrpl(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1966 1966 { 1967 1967 int idx = (pDis->bOpCode - 0x80) * 8; … … 1983 1983 //***************************************************************************** 1984 1984 //***************************************************************************** 1985 static size_t ParseShiftGrp2(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)1985 static size_t ParseShiftGrp2(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 1986 1986 { 1987 1987 int idx; … … 2023 2023 //***************************************************************************** 2024 2024 //***************************************************************************** 2025 static size_t ParseGrp3(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2025 static size_t ParseGrp3(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2026 2026 { 2027 2027 int idx = (pDis->bOpCode - 0xF6) * 8; … … 2044 2044 //***************************************************************************** 2045 2045 //***************************************************************************** 2046 static size_t ParseGrp4(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2046 static size_t ParseGrp4(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2047 2047 { 2048 2048 size_t size = 0; … … 2064 2064 //***************************************************************************** 2065 2065 //***************************************************************************** 2066 static size_t ParseGrp5(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2066 static size_t ParseGrp5(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2067 2067 { 2068 2068 size_t size = 0; … … 2088 2088 // 2089 2089 //***************************************************************************** 2090 static size_t Parse3DNow(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2090 static size_t Parse3DNow(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2091 2091 { 2092 2092 size_t size = 0; … … 2124 2124 //***************************************************************************** 2125 2125 //***************************************************************************** 2126 static size_t ParseGrp6(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2126 static size_t ParseGrp6(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2127 2127 { 2128 2128 size_t size = 0; … … 2144 2144 //***************************************************************************** 2145 2145 //***************************************************************************** 2146 static size_t ParseGrp7(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2146 static size_t ParseGrp7(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2147 2147 { 2148 2148 size_t size = 0; … … 2172 2172 //***************************************************************************** 2173 2173 //***************************************************************************** 2174 static size_t ParseGrp8(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2174 static size_t ParseGrp8(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2175 2175 { 2176 2176 size_t size = 0; … … 2192 2192 //***************************************************************************** 2193 2193 //***************************************************************************** 2194 static size_t ParseGrp9(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2194 static size_t ParseGrp9(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2195 2195 { 2196 2196 size_t size = 0; … … 2212 2212 //***************************************************************************** 2213 2213 //***************************************************************************** 2214 static size_t ParseGrp10(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2214 static size_t ParseGrp10(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2215 2215 { 2216 2216 size_t size = 0; … … 2232 2232 //***************************************************************************** 2233 2233 //***************************************************************************** 2234 static size_t ParseGrp12(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2234 static size_t ParseGrp12(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2235 2235 { 2236 2236 size_t size = 0; … … 2254 2254 //***************************************************************************** 2255 2255 //***************************************************************************** 2256 static size_t ParseGrp13(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2256 static size_t ParseGrp13(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2257 2257 { 2258 2258 size_t size = 0; … … 2276 2276 //***************************************************************************** 2277 2277 //***************************************************************************** 2278 static size_t ParseGrp14(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2278 static size_t ParseGrp14(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2279 2279 { 2280 2280 size_t size = 0; … … 2298 2298 //***************************************************************************** 2299 2299 //***************************************************************************** 2300 static size_t ParseGrp15(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2300 static size_t ParseGrp15(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2301 2301 { 2302 2302 size_t size = 0; … … 2322 2322 //***************************************************************************** 2323 2323 //***************************************************************************** 2324 static size_t ParseGrp16(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDIS CPUSTATE pDis)2324 static size_t ParseGrp16(size_t offInstr, PCDISOPCODE pOp, PDISOPPARAM pParam, PDISSTATE pDis) 2325 2325 { 2326 2326 size_t size = 0; … … 2341 2341 //***************************************************************************** 2342 2342 //***************************************************************************** 2343 static void disasmModRMReg(PDIS CPUSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam, int fRegAddr)2343 static void disasmModRMReg(PDISSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam, int fRegAddr) 2344 2344 { 2345 2345 NOREF(pOp); NOREF(pDis); … … 2419 2419 static const uint8_t g_auIndexModRMReg16[4] = { DISGREG_SI, DISGREG_DI, DISGREG_SI, DISGREG_DI }; 2420 2420 //***************************************************************************** 2421 static void disasmModRMReg16(PDIS CPUSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam)2421 static void disasmModRMReg16(PDISSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam) 2422 2422 { 2423 2423 NOREF(pDis); NOREF(pOp); … … 2432 2432 //***************************************************************************** 2433 2433 //***************************************************************************** 2434 static void disasmModRMSReg(PDIS CPUSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam)2434 static void disasmModRMSReg(PDISSTATE pDis, PCDISOPCODE pOp, unsigned idx, PDISOPPARAM pParam) 2435 2435 { 2436 2436 NOREF(pOp); … … 2474 2474 * @param pDis Fully disassembled instruction. 2475 2475 */ 2476 static void disValidateLockSequence(PDIS CPUSTATE pDis)2476 static void disValidateLockSequence(PDISSTATE pDis) 2477 2477 { 2478 2478 Assert(pDis->fPrefix & DISPREFIX_LOCK); … … 2538 2538 * @param pcbInstr Where to store the instruction size. Can be NULL. 2539 2539 */ 2540 static int disInstrWorker(PDIS CPUSTATE pDis, PCDISOPCODE paOneByteMap, uint32_t *pcbInstr)2540 static int disInstrWorker(PDISSTATE pDis, PCDISOPCODE paOneByteMap, uint32_t *pcbInstr) 2541 2541 { 2542 2542 /* … … 2654 2654 */ 2655 2655 DECL_FORCE_INLINE(PCDISOPCODE) 2656 disInitializeState(PDIS CPUSTATE pDis, RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, uint32_t fFilter,2656 disInitializeState(PDISSTATE pDis, RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, uint32_t fFilter, 2657 2657 PFNDISREADBYTES pfnReadBytes, void *pvUser) 2658 2658 { … … 2660 2660 * Note! The RT_BZERO make ASSUMPTIONS about the placement of pvUser2. 2661 2661 */ 2662 RT_BZERO(pDis, RT_OFFSETOF(DIS CPUSTATE, pvUser2));2662 RT_BZERO(pDis, RT_OFFSETOF(DISSTATE, pvUser2)); 2663 2663 2664 2664 #ifdef VBOX_STRICT /* poison */ … … 2710 2710 * Reads some bytes into the cache. 2711 2711 * 2712 * While this will set DIS CPUSTATE::rc on failure, the caller should disregard2712 * While this will set DISSTATE::rc on failure, the caller should disregard 2713 2713 * this since that is what would happen if we didn't prefetch bytes prior to the 2714 2714 * instruction parsing. … … 2716 2716 * @param pDis The disassembler state. 2717 2717 */ 2718 DECL_FORCE_INLINE(void) disPrefetchBytes(PDIS CPUSTATE pDis)2718 DECL_FORCE_INLINE(void) disPrefetchBytes(PDISSTATE pDis) 2719 2719 { 2720 2720 /* … … 2748 2748 * @param pvUser User argument for the instruction reader. (Ends up in pvUser.) 2749 2749 * @param pDis Pointer to CPU structure. With the exception of 2750 * DIS CPUSTATE::pvUser2, the structure will be2750 * DISSTATE::pvUser2, the structure will be 2751 2751 * completely initialized by this API, i.e. no input is 2752 2752 * taken from it. 2753 2753 * @param pcbInstr Where to store the size of the instruction. (This 2754 * is also stored in PDIS CPUSTATE::cbInstr.) Optional.2754 * is also stored in PDISSTATE::cbInstr.) Optional. 2755 2755 */ 2756 2756 DISDECL(int) DISInstEx(RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, uint32_t fFilter, 2757 2757 PFNDISREADBYTES pfnReadBytes, void *pvUser, 2758 PDIS CPUSTATE pDis, uint32_t *pcbInstr)2758 PDISSTATE pDis, uint32_t *pcbInstr) 2759 2759 { 2760 2760 … … 2780 2780 * @param pvUser User argument for the instruction reader. (Ends up in pvUser.) 2781 2781 * @param pDis Pointer to CPU structure. With the exception of 2782 * DIS CPUSTATE::pvUser2, the structure will be2782 * DISSTATE::pvUser2, the structure will be 2783 2783 * completely initialized by this API, i.e. no input is 2784 2784 * taken from it. 2785 2785 * @param pcbInstr Where to store the size of the instruction. (This 2786 * is also stored in PDIS CPUSTATE::cbInstr.) Optional.2786 * is also stored in PDISSTATE::cbInstr.) Optional. 2787 2787 */ 2788 2788 DISDECL(int) DISInstWithPrefetchedBytes(RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, uint32_t fFilter, 2789 2789 void const *pvPrefetched, size_t cbPretched, 2790 2790 PFNDISREADBYTES pfnReadBytes, void *pvUser, 2791 PDIS CPUSTATE pDis, uint32_t *pcbInstr)2791 PDISSTATE pDis, uint32_t *pcbInstr) 2792 2792 { 2793 2793 PCDISOPCODE paOneByteMap = disInitializeState(pDis, uInstrAddr, enmCpuMode, fFilter, pfnReadBytes, pvUser); … … 2825 2825 * @param pfnReadBytes Callback for reading instruction bytes. 2826 2826 * @param pvUser User argument for the instruction reader. (Ends up in pvUser.) 2827 * @param pDis Pointer to cpu structure. Will be initialized.2827 * @param pDis Pointer to disassembler state (output). 2828 2828 * @param pcbInstr Where to store the size of the instruction. 2829 2829 * NULL is allowed. This is also stored in 2830 * PDIS CPUSTATE::cbInstr.2830 * PDISSTATE::cbInstr. 2831 2831 */ 2832 2832 DISDECL(int) DISInstrWithReader(RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, PFNDISREADBYTES pfnReadBytes, void *pvUser, 2833 PDIS CPUSTATE pDis, uint32_t *pcbInstr)2833 PDISSTATE pDis, uint32_t *pcbInstr) 2834 2834 { 2835 2835 return DISInstEx(uInstrAddr, enmCpuMode, DISOPTYPE_ALL, pfnReadBytes, pvUser, pDis, pcbInstr); … … 2850 2850 * @param pfnReadBytes Callback for reading instruction bytes. 2851 2851 * @param pvUser User argument for the instruction reader. (Ends up in pvUser.) 2852 * @param pDis Pointer to cpu structure. Will be initialized.2852 * @param pDis Pointer to disassembler state (output). 2853 2853 * @param pcbInstr Where to store the size of the instruction. 2854 2854 * NULL is allowed. This is also stored in 2855 * PDIS CPUSTATE::cbInstr.2855 * PDISSTATE::cbInstr. 2856 2856 */ 2857 DISDECL(int) DISInstr(const void *pvInstr, DISCPUMODE enmCpuMode, PDIS CPUSTATE pDis, uint32_t *pcbInstr)2857 DISDECL(int) DISInstr(const void *pvInstr, DISCPUMODE enmCpuMode, PDISSTATE pDis, uint32_t *pcbInstr) 2858 2858 { 2859 2859 return DISInstEx((uintptr_t)pvInstr, enmCpuMode, DISOPTYPE_ALL, NULL /*pfnReadBytes*/, NULL /*pvUser*/, pDis, pcbInstr); -
trunk/src/VBox/Disassembler/DisasmFormatBytes.cpp
r41789 r41790 36 36 * @param fFlags The flags passed to the formatter. 37 37 */ 38 size_t disFormatBytes(PCDIS CPUSTATE pDis, char *pszDst, size_t cchDst, uint32_t fFlags)38 size_t disFormatBytes(PCDISSTATE pDis, char *pszDst, size_t cchDst, uint32_t fFlags) 39 39 { 40 40 size_t cchOutput = 0; -
trunk/src/VBox/Disassembler/DisasmFormatYasm.cpp
r41789 r41790 91 91 * @param pcchReg Where to store the length of the name. 92 92 */ 93 static const char *disasmFormatYasmBaseReg(PCDIS CPUSTATE pDis, PCDISOPPARAM pParam, size_t *pcchReg)93 static const char *disasmFormatYasmBaseReg(PCDISSTATE pDis, PCDISOPPARAM pParam, size_t *pcchReg) 94 94 { 95 95 switch (pParam->fUse & ( DISUSE_REG_GEN8 | DISUSE_REG_GEN16 | DISUSE_REG_GEN32 | DISUSE_REG_GEN64 … … 202 202 * @param pcchReg Where to store the length of the name. 203 203 */ 204 static const char *disasmFormatYasmIndexReg(PCDIS CPUSTATE pDis, PCDISOPPARAM pParam, size_t *pcchReg)204 static const char *disasmFormatYasmIndexReg(PCDISSTATE pDis, PCDISOPPARAM pParam, size_t *pcchReg) 205 205 { 206 206 switch (pDis->uAddrMode) … … 251 251 * @param pvUser User argument for pfnGetSymbol. 252 252 */ 253 DISDECL(size_t) DISFormatYasmEx(PCDIS CPUSTATE pDis, char *pszBuf, size_t cchBuf, uint32_t fFlags,253 DISDECL(size_t) DISFormatYasmEx(PCDISSTATE pDis, char *pszBuf, size_t cchBuf, uint32_t fFlags, 254 254 PFNDISGETSYMBOL pfnGetSymbol, void *pvUser) 255 255 { … … 1191 1191 * @param cchBuf The size of the output buffer. 1192 1192 */ 1193 DISDECL(size_t) DISFormatYasm(PCDIS CPUSTATE pDis, char *pszBuf, size_t cchBuf)1193 DISDECL(size_t) DISFormatYasm(PCDISSTATE pDis, char *pszBuf, size_t cchBuf) 1194 1194 { 1195 1195 return DISFormatYasmEx(pDis, pszBuf, cchBuf, 0 /* fFlags */, NULL /* pfnGetSymbol */, NULL /* pvUser */); … … 1206 1206 * bytes. 1207 1207 */ 1208 DISDECL(bool) DISFormatYasmIsOddEncoding(PDIS CPUSTATE pDis)1208 DISDECL(bool) DISFormatYasmIsOddEncoding(PDISSTATE pDis) 1209 1209 { 1210 1210 /* -
trunk/src/VBox/Disassembler/DisasmInternal.h
r41789 r41790 171 171 172 172 173 size_t disFormatBytes(PCDIS CPUSTATE pDis, char *pszDst, size_t cchDst, uint32_t fFlags);173 size_t disFormatBytes(PCDISSTATE pDis, char *pszDst, size_t cchDst, uint32_t fFlags); 174 174 175 175 /** @} */ -
trunk/src/VBox/Disassembler/DisasmReg.cpp
r41789 r41790 201 201 //***************************************************************************** 202 202 //***************************************************************************** 203 DISDECL(int) DISGetParamSize(PCDIS CPUSTATE pDis, PCDISOPPARAM pParam)203 DISDECL(int) DISGetParamSize(PCDISSTATE pDis, PCDISOPPARAM pParam) 204 204 { 205 205 unsigned subtype = OP_PARM_VSUBTYPE(pParam->fParam); … … 257 257 //***************************************************************************** 258 258 //***************************************************************************** 259 DISDECL(DISSELREG) DISDetectSegReg(PCDIS CPUSTATE pDis, PCDISOPPARAM pParam)259 DISDECL(DISSELREG) DISDetectSegReg(PCDISSTATE pDis, PCDISOPPARAM pParam) 260 260 { 261 261 if (pDis->fPrefix & DISPREFIX_SEG) … … 278 278 //***************************************************************************** 279 279 //***************************************************************************** 280 DISDECL(uint8_t) DISQuerySegPrefixByte(PCDIS CPUSTATE pDis)280 DISDECL(uint8_t) DISQuerySegPrefixByte(PCDISSTATE pDis) 281 281 { 282 282 Assert(pDis->fPrefix & DISPREFIX_SEG); … … 499 499 * 500 500 */ 501 DISDECL(int) DISQueryParamVal(PCPUMCTXCORE pCtx, PCDIS CPUSTATE pDis, PCDISOPPARAM pParam, PDISQPVPARAMVAL pParamVal, DISQPVWHICH parmtype)501 DISDECL(int) DISQueryParamVal(PCPUMCTXCORE pCtx, PCDISSTATE pDis, PCDISOPPARAM pParam, PDISQPVPARAMVAL pParamVal, DISQPVWHICH parmtype) 502 502 { 503 503 memset(pParamVal, 0, sizeof(*pParamVal)); … … 757 757 * 758 758 */ 759 DISDECL(int) DISQueryParamRegPtr(PCPUMCTXCORE pCtx, PCDIS CPUSTATE pDis, PCDISOPPARAM pParam, void **ppReg, size_t *pcbSize)759 DISDECL(int) DISQueryParamRegPtr(PCPUMCTXCORE pCtx, PCDISSTATE pDis, PCDISOPPARAM pParam, void **ppReg, size_t *pcbSize) 760 760 { 761 761 NOREF(pDis); -
trunk/src/VBox/Disassembler/testcase/tstDisasm-1.cpp
r41781 r41790 43 43 uint32_t const cErrBefore = RTTestIErrorCount(); 44 44 uint32_t cb = 1; 45 DIS CPUSTATE Cpu;45 DISSTATE Dis; 46 46 char szOutput[256] = {0}; 47 int rc = DISInstrToStr(&pabInstrs[off], enmDisCpuMode, & Cpu, &cb, szOutput, sizeof(szOutput));47 int rc = DISInstrToStr(&pabInstrs[off], enmDisCpuMode, &Dis, &cb, szOutput, sizeof(szOutput)); 48 48 49 49 RTTESTI_CHECK_RC(rc, VINF_SUCCESS); 50 RTTESTI_CHECK(cb == Cpu.cbInstr);50 RTTESTI_CHECK(cb == Dis.cbInstr); 51 51 RTTESTI_CHECK(cb > 0); 52 52 RTTESTI_CHECK(cb <= 16); … … 70 70 if (cErrBefore != RTTestIErrorCount()) 71 71 RTTestIFailureDetails("rc=%Rrc, off=%#x (%u) cbInstr=%u enmDisCpuMode=%d\n", 72 rc, off, Cpu.cbInstr, enmDisCpuMode);72 rc, off, Dis.cbInstr, enmDisCpuMode); 73 73 RTTestIPrintf(RTTESTLVL_ALWAYS, "%s\n", szOutput); 74 74 off += cb; … … 87 87 for (size_t off = 0; off < cbInstrs; cInstrs++) 88 88 { 89 uint32_t 90 DIS CPUSTATE Cpu;91 DISInstr(&pabInstrs[off], enmDisCpuMode, & Cpu, &cb);89 uint32_t cb = 1; 90 DISSTATE Dis; 91 DISInstr(&pabInstrs[off], enmDisCpuMode, &Dis, &cb); 92 92 off += cb; 93 93 } -
trunk/src/VBox/Disassembler/testcase/tstDisasm-2.cpp
r41789 r41790 40 40 typedef struct MYDISSTATE 41 41 { 42 DIS CPUSTATE Cpu;42 DISSTATE Dis; 43 43 uint64_t uAddress; /**< The current instruction address. */ 44 44 uint8_t *pbInstr; /**< The current instruction (pointer). */ … … 93 93 94 94 #else 95 size_t cch = DISFormatYasmEx(&pState-> Cpu, szTmp, sizeof(szTmp),95 size_t cch = DISFormatYasmEx(&pState->Dis, szTmp, sizeof(szTmp), 96 96 DIS_FMT_FLAGS_STRICT | DIS_FMT_FLAGS_ADDR_RIGHT | DIS_FMT_FLAGS_ADDR_COMMENT 97 97 | DIS_FMT_FLAGS_BYTES_RIGHT | DIS_FMT_FLAGS_BYTES_COMMENT | DIS_FMT_FLAGS_BYTES_SPACED, … … 130 130 * @param pDis The disassembler output. 131 131 */ 132 static bool MyDisasIsValidInstruction(DIS CPUSTATE const *pDis)132 static bool MyDisasIsValidInstruction(DISSTATE const *pDis) 133 133 { 134 134 switch (pDis->pCurInstr->uOpcode) … … 168 168 * @interface_method_impl{FNDISREADBYTES} 169 169 */ 170 static DECLCALLBACK(int) MyDisasInstrRead(PDIS CPUSTATE pDis, uint8_t offInstr, uint8_t cbMinRead, uint8_t cbMaxRead)170 static DECLCALLBACK(int) MyDisasInstrRead(PDISSTATE pDis, uint8_t offInstr, uint8_t cbMinRead, uint8_t cbMaxRead) 171 171 { 172 172 PMYDISSTATE pState = (PMYDISSTATE)pDis; 173 RTUINTPTR uSrcAddr = pState-> Cpu.uInstrAddr + offInstr;173 RTUINTPTR uSrcAddr = pState->Dis.uInstrAddr + offInstr; 174 174 if (RT_LIKELY( pState->uNextAddr == uSrcAddr 175 175 && pState->cbLeft >= cbMinRead)) … … 180 180 //size_t cbToRead = cbMaxRead; 181 181 size_t cbToRead = cbMinRead; 182 memcpy(&pState-> Cpu.abInstr[offInstr], pState->pbNext, cbToRead);183 pState-> Cpu.cbCachedInstr = offInstr + cbToRead;182 memcpy(&pState->Dis.abInstr[offInstr], pState->pbNext, cbToRead); 183 pState->Dis.cbCachedInstr = offInstr + cbToRead; 184 184 pState->pbNext += cbToRead; 185 185 pState->cbLeft -= cbToRead; … … 195 195 if (pState->cbLeft > 0) 196 196 { 197 memcpy(&pState-> Cpu.abInstr[offInstr], pState->pbNext, pState->cbLeft);197 memcpy(&pState->Dis.abInstr[offInstr], pState->pbNext, pState->cbLeft); 198 198 offInstr += (uint8_t)pState->cbLeft; 199 199 cbMinRead -= (uint8_t)pState->cbLeft; … … 202 202 pState->cbLeft = 0; 203 203 } 204 memset(&pState-> Cpu.abInstr[offInstr], 0xcc, cbMinRead);204 memset(&pState->Dis.abInstr[offInstr], 0xcc, cbMinRead); 205 205 pState->rc = VERR_EOF; 206 206 } … … 211 211 */ 212 212 RTStrmPrintf(g_pStdErr, "Reading before current instruction!\n"); 213 memset(&pState-> Cpu.abInstr[offInstr], 0x90, cbMinRead);213 memset(&pState->Dis.abInstr[offInstr], 0x90, cbMinRead); 214 214 pState->rc = VERR_INTERNAL_ERROR; 215 215 } 216 pState-> Cpu.cbCachedInstr = offInstr + cbMinRead;216 pState->Dis.cbCachedInstr = offInstr + cbMinRead; 217 217 return pState->rc; 218 218 } … … 286 286 287 287 int rc = DISInstrToStrWithReader(State.uAddress, enmCpuMode, MyDisasInstrRead, &State, 288 &State. Cpu, &State.cbInstr, State.szLine, sizeof(State.szLine));288 &State.Dis, &State.cbInstr, State.szLine, sizeof(State.szLine)); 289 289 if ( RT_SUCCESS(rc) 290 290 || ( ( rc == VERR_DIS_INVALID_OPCODE … … 294 294 State.fUndefOp = rc == VERR_DIS_INVALID_OPCODE 295 295 || rc == VERR_DIS_GEN_FAILURE 296 || State. Cpu.pCurInstr->uOpcode == OP_INVALID297 || State. Cpu.pCurInstr->uOpcode == OP_ILLUD2296 || State.Dis.pCurInstr->uOpcode == OP_INVALID 297 || State.Dis.pCurInstr->uOpcode == OP_ILLUD2 298 298 || ( State.enmUndefOp == kUndefOp_DefineByte 299 && !MyDisasIsValidInstruction(&State. Cpu));299 && !MyDisasIsValidInstruction(&State.Dis)); 300 300 if (State.fUndefOp && State.enmUndefOp == kUndefOp_DefineByte) 301 301 { 302 302 if (!State.cbInstr) 303 303 { 304 State. Cpu.abInstr[0] = 0;305 State. Cpu.pfnReadBytes(&State.Cpu, 0, 1, 1);304 State.Dis.abInstr[0] = 0; 305 State.Dis.pfnReadBytes(&State.Dis, 0, 1, 1); 306 306 State.cbInstr = 1; 307 307 } 308 308 RTPrintf(" db"); 309 309 for (unsigned off = 0; off < State.cbInstr; off++) 310 RTPrintf(off ? ", %03xh" : " %03xh", State. Cpu.abInstr[off]);310 RTPrintf(off ? ", %03xh" : " %03xh", State.Dis.abInstr[off]); 311 311 RTPrintf(" ; %s\n", State.szLine); 312 312 } 313 313 else if (!State.fUndefOp && State.enmUndefOp == kUndefOp_All) 314 314 { 315 RTPrintf("%s: error at %#RX64: unexpected valid instruction (op=%d)\n", argv0, State.uAddress, State. Cpu.pCurInstr->uOpcode);315 RTPrintf("%s: error at %#RX64: unexpected valid instruction (op=%d)\n", argv0, State.uAddress, State.Dis.pCurInstr->uOpcode); 316 316 pfnFormatter(&State); 317 317 rcRet = VERR_GENERAL_FAILURE; … … 319 319 else if (State.fUndefOp && State.enmUndefOp == kUndefOp_Fail) 320 320 { 321 RTPrintf("%s: error at %#RX64: undefined opcode (op=%d)\n", argv0, State.uAddress, State. Cpu.pCurInstr->uOpcode);321 RTPrintf("%s: error at %#RX64: undefined opcode (op=%d)\n", argv0, State.uAddress, State.Dis.pCurInstr->uOpcode); 322 322 pfnFormatter(&State); 323 323 rcRet = VERR_GENERAL_FAILURE; … … 327 327 /* Use db for odd encodings that we can't make the assembler use. */ 328 328 if ( State.enmUndefOp == kUndefOp_DefineByte 329 && DISFormatYasmIsOddEncoding(&State. Cpu))329 && DISFormatYasmIsOddEncoding(&State.Dis)) 330 330 { 331 331 RTPrintf(" db"); 332 332 for (unsigned off = 0; off < State.cbInstr; off++) 333 RTPrintf(off ? ", %03xh" : " %03xh", State. Cpu.abInstr[off]);333 RTPrintf(off ? ", %03xh" : " %03xh", State.Dis.abInstr[off]); 334 334 RTPrintf(" ; "); 335 335 }
Note:
See TracChangeset
for help on using the changeset viewer.