Changeset 41732 in vbox for trunk/src/VBox/Disassembler
- Timestamp:
- Jun 14, 2012 11:57:45 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78540
- Location:
- trunk/src/VBox/Disassembler
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Disassembler/DisasmCore.cpp
r41731 r41732 231 231 * @param pcbInstr Where to store the size of the instruction. 232 232 * NULL is allowed. This is also stored in 233 * PDISCPUSTATE:: opsize.233 * PDISCPUSTATE::cbInstr. 234 234 */ 235 235 DISDECL(int) DISInstr(const void *pvInstr, DISCPUMODE enmCpuMode, PDISCPUSTATE pCpu, uint32_t *pcbInstr) … … 253 253 * @param pcbInstr Where to store the size of the instruction. 254 254 * NULL is allowed. This is also stored in 255 * PDISCPUSTATE:: opsize.255 * PDISCPUSTATE::cbInstr. 256 256 */ 257 257 DISDECL(int) DISInstrWithReader(RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, PFNDISREADBYTES pfnReadBytes, void *pvUser, … … 277 277 * taken from it. 278 278 * @param pcbInstr Where to store the size of the instruction. (This 279 * is also stored in PDISCPUSTATE:: opsize.) Optional.279 * is also stored in PDISCPUSTATE::cbInstr.) Optional. 280 280 */ 281 281 DISDECL(int) DISInstEx(RTUINTPTR uInstrAddr, DISCPUMODE enmCpuMode, uint32_t fFilter, … … 433 433 } 434 434 435 AssertMsg(pCpu-> opsize == iByte || RT_FAILURE_NP(pCpu->rc), ("%u %u\n", pCpu->opsize, iByte));436 pCpu-> opsize= iByte;435 AssertMsg(pCpu->cbInstr == iByte || RT_FAILURE_NP(pCpu->rc), ("%u %u\n", pCpu->cbInstr, iByte)); 436 pCpu->cbInstr = iByte; 437 437 if (pcbInstr) 438 438 *pcbInstr = iByte; … … 2414 2414 * Figure out which case it is. 2415 2415 */ 2416 uint32_t cbInstr = pCpu-> opsize;2416 uint32_t cbInstr = pCpu->cbInstr; 2417 2417 RTUINTPTR off = uAddress - pCpu->uInstrAddr; 2418 2418 if (off < cbInstr) … … 2450 2450 RT_BZERO(&pCpu->abInstr[cbInstr], cbGap); 2451 2451 } 2452 pCpu-> opsize= cbInstr = off;2452 pCpu->cbInstr = cbInstr = off; 2453 2453 } 2454 2454 … … 2459 2459 { 2460 2460 memcpy(&pCpu->abInstr[cbInstr], pbSrc, cbSrc); 2461 pCpu-> opsize= cbInstr + (uint32_t)cbSrc;2461 pCpu->cbInstr = cbInstr + (uint32_t)cbSrc; 2462 2462 } 2463 2463 else … … 2465 2465 size_t cbToCopy = sizeof(pCpu->abInstr) - off; 2466 2466 memcpy(&pCpu->abInstr[cbInstr], pbSrc, cbToCopy); 2467 pCpu-> opsize= sizeof(pCpu->abInstr);2467 pCpu->cbInstr = sizeof(pCpu->abInstr); 2468 2468 AssertMsgFailed(("%RTptr LB %zx off=%RTptr (%.*Rhxs)", uAddress, cbSrc, off, sizeof(pCpu->abInstr), pCpu->abInstr)); 2469 2469 } … … 2497 2497 /** @todo change this into reading directly into abInstr and use it as a 2498 2498 * cache. */ 2499 if (RT_LIKELY( pCpu->uInstrAddr + pCpu-> opsize== uAddress2500 && pCpu-> opsize+ sizeof(bTemp) < sizeof(pCpu->abInstr)))2501 pCpu->abInstr[pCpu-> opsize++] = bTemp;2499 if (RT_LIKELY( pCpu->uInstrAddr + pCpu->cbInstr == uAddress 2500 && pCpu->cbInstr + sizeof(bTemp) < sizeof(pCpu->abInstr))) 2501 pCpu->abInstr[pCpu->cbInstr++] = bTemp; 2502 2502 else 2503 2503 disStoreInstrBytesSlow(pCpu, uAddress, &bTemp, sizeof(bTemp)); … … 2518 2518 } 2519 2519 2520 if (RT_LIKELY( pCpu->uInstrAddr + pCpu-> opsize== uAddress2521 && pCpu-> opsize+ sizeof(uTemp) < sizeof(pCpu->abInstr)))2522 { 2523 pCpu->abInstr[pCpu-> opsize] = uTemp.au8[0];2524 pCpu->abInstr[pCpu-> opsize+ 1] = uTemp.au8[1];2525 pCpu-> opsize+= 2;2520 if (RT_LIKELY( pCpu->uInstrAddr + pCpu->cbInstr == uAddress 2521 && pCpu->cbInstr + sizeof(uTemp) < sizeof(pCpu->abInstr))) 2522 { 2523 pCpu->abInstr[pCpu->cbInstr ] = uTemp.au8[0]; 2524 pCpu->abInstr[pCpu->cbInstr + 1] = uTemp.au8[1]; 2525 pCpu->cbInstr += 2; 2526 2526 } 2527 2527 else … … 2543 2543 } 2544 2544 2545 if (RT_LIKELY( pCpu->uInstrAddr + pCpu-> opsize== uAddress2546 && pCpu-> opsize+ sizeof(uTemp) < sizeof(pCpu->abInstr)))2547 { 2548 pCpu->abInstr[pCpu-> opsize] = uTemp.au8[0];2549 pCpu->abInstr[pCpu-> opsize+ 1] = uTemp.au8[1];2550 pCpu->abInstr[pCpu-> opsize+ 2] = uTemp.au8[2];2551 pCpu->abInstr[pCpu-> opsize+ 3] = uTemp.au8[3];2552 pCpu-> opsize+= 4;2545 if (RT_LIKELY( pCpu->uInstrAddr + pCpu->cbInstr == uAddress 2546 && pCpu->cbInstr + sizeof(uTemp) < sizeof(pCpu->abInstr))) 2547 { 2548 pCpu->abInstr[pCpu->cbInstr ] = uTemp.au8[0]; 2549 pCpu->abInstr[pCpu->cbInstr + 1] = uTemp.au8[1]; 2550 pCpu->abInstr[pCpu->cbInstr + 2] = uTemp.au8[2]; 2551 pCpu->abInstr[pCpu->cbInstr + 3] = uTemp.au8[3]; 2552 pCpu->cbInstr += 4; 2553 2553 } 2554 2554 else … … 2570 2570 } 2571 2571 2572 if (RT_LIKELY( pCpu->uInstrAddr + pCpu-> opsize== uAddress2573 && pCpu-> opsize+ sizeof(uTemp) < sizeof(pCpu->abInstr)))2574 { 2575 pCpu->abInstr[pCpu-> opsize] = uTemp.au8[0];2576 pCpu->abInstr[pCpu-> opsize+ 1] = uTemp.au8[1];2577 pCpu->abInstr[pCpu-> opsize+ 2] = uTemp.au8[2];2578 pCpu->abInstr[pCpu-> opsize+ 3] = uTemp.au8[3];2579 pCpu->abInstr[pCpu-> opsize+ 4] = uTemp.au8[4];2580 pCpu->abInstr[pCpu-> opsize+ 5] = uTemp.au8[5];2581 pCpu->abInstr[pCpu-> opsize+ 6] = uTemp.au8[6];2582 pCpu->abInstr[pCpu-> opsize+ 7] = uTemp.au8[7];2583 pCpu-> opsize+= 8;2572 if (RT_LIKELY( pCpu->uInstrAddr + pCpu->cbInstr == uAddress 2573 && pCpu->cbInstr + sizeof(uTemp) < sizeof(pCpu->abInstr))) 2574 { 2575 pCpu->abInstr[pCpu->cbInstr ] = uTemp.au8[0]; 2576 pCpu->abInstr[pCpu->cbInstr + 1] = uTemp.au8[1]; 2577 pCpu->abInstr[pCpu->cbInstr + 2] = uTemp.au8[2]; 2578 pCpu->abInstr[pCpu->cbInstr + 3] = uTemp.au8[3]; 2579 pCpu->abInstr[pCpu->cbInstr + 4] = uTemp.au8[4]; 2580 pCpu->abInstr[pCpu->cbInstr + 5] = uTemp.au8[5]; 2581 pCpu->abInstr[pCpu->cbInstr + 6] = uTemp.au8[6]; 2582 pCpu->abInstr[pCpu->cbInstr + 7] = uTemp.au8[7]; 2583 pCpu->cbInstr += 8; 2584 2584 } 2585 2585 else -
trunk/src/VBox/Disassembler/DisasmFormatBytes.cpp
r41658 r41732 39 39 { 40 40 size_t cchOutput = 0; 41 uint32_t cb = pCpu-> opsize;41 uint32_t cb = pCpu->cbInstr; 42 42 AssertStmt(cb <= 16, cb = 16); 43 43 -
trunk/src/VBox/Disassembler/DisasmFormatYasm.cpp
r41730 r41732 500 500 else if (pCpu->opcode == 0x1f) 501 501 { 502 Assert(pCpu-> opsize>= 3);502 Assert(pCpu->cbInstr >= 3); 503 503 PUT_SZ("db 00fh, 01fh,"); 504 504 PUT_NUM_8(pCpu->ModRM.u); 505 for (unsigned i = 3; i < pCpu-> opsize; i++)505 for (unsigned i = 3; i < pCpu->cbInstr; i++) 506 506 { 507 507 PUT_C(','); … … 907 907 PUT_SZ(" ("); 908 908 909 RTUINTPTR uTrgAddr = pCpu->uInstrAddr + pCpu-> opsize+ offDisplacement;909 RTUINTPTR uTrgAddr = pCpu->uInstrAddr + pCpu->cbInstr + offDisplacement; 910 910 if (pCpu->mode == DISCPUMODE_16BIT) 911 911 PUT_NUM_16(uTrgAddr); -
trunk/src/VBox/Disassembler/DisasmReg.cpp
r41729 r41732 625 625 Assert(pCpu->mode == DISCPUMODE_64BIT); 626 626 /* Relative to the RIP of the next instruction. */ 627 pParamVal->val.val64 += pParam->uDisp.i32 + pCtx->rip + pCpu-> opsize;627 pParamVal->val.val64 += pParam->uDisp.i32 + pCtx->rip + pCpu->cbInstr; 628 628 } 629 629 return VINF_SUCCESS; -
trunk/src/VBox/Disassembler/DisasmTest.cpp
r41718 r41732 1 1 /* $Id$ */ 2 2 /** @file 3 * VBox disassembler - Test application 3 * VBox disassembler - Test application 4 4 */ 5 5 … … 47 47 48 48 RTTESTI_CHECK_RC(rc, VINF_SUCCESS); 49 RTTESTI_CHECK(cb == Cpu. opsize);49 RTTESTI_CHECK(cb == Cpu.cbInstr); 50 50 RTTESTI_CHECK(cb > 0); 51 51 RTTESTI_CHECK(cb <= 16); … … 69 69 if (cErrBefore != RTTestIErrorCount()) 70 70 RTTestIFailureDetails("rc=%Rrc, off=%#x (%u) cbInstr=%u enmDisCpuMode=%d\n", 71 rc, off, Cpu. opsize, enmDisCpuMode);71 rc, off, Cpu.cbInstr, enmDisCpuMode); 72 72 RTTestIPrintf(RTTESTLVL_ALWAYS, "%s\n", szOutput); 73 73 off += cb;
Note:
See TracChangeset
for help on using the changeset viewer.