- Timestamp:
- Mar 4, 2024 11:43:16 AM (7 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r103660 r103661 14129 14129 # endif 14130 14130 AssertMsgReturnVoid(rcCs == CS_ERR_OK, ("%d (%#x)\n", rcCs, rcCs)); 14131 14132 //rcCs = cs_option(hDisasm, CS_OPT_DETAIL, CS_OPT_ON); - not needed as pInstr->detail doesn't provide full memory detail. 14133 //Assert(rcCs == CS_ERR_OK); 14131 14134 #endif 14132 14135 … … 14474 14477 { 14475 14478 Assert(cInstrs == 1); 14479 const char *pszAnnotation = NULL; 14480 # if defined(RT_ARCH_ARM64) 14481 if ( (pInstr->id >= ARM64_INS_LD1 && pInstr->id < ARM64_INS_LSL) 14482 || (pInstr->id >= ARM64_INS_ST1 && pInstr->id < ARM64_INS_SUB)) 14483 { 14484 /* This is bit crappy, but the disassembler provides incomplete addressing details. */ 14485 AssertCompile(IEMNATIVE_REG_FIXED_PVMCPU == 28 && IEMNATIVE_REG_FIXED_PCPUMCTX == 27); 14486 char *psz = strchr(pInstr->op_str, '['); 14487 if (psz && psz[1] == 'x' && psz[2] == '2' && (psz[3] == '7' || psz[3] == '8')) 14488 { 14489 uint32_t const offVCpu = psz[3] == '8'? 0 : RT_UOFFSETOF(VMCPU, cpum.GstCtx); 14490 int32_t off = -1; 14491 psz += 4; 14492 if (*psz == ']') 14493 off = 0; 14494 else if (*psz == ',') 14495 { 14496 psz = RTStrStripL(psz + 1); 14497 if (*psz == '#') 14498 off = RTStrToInt32(&psz[1]); 14499 /** @todo deal with index registers and LSL as well... */ 14500 } 14501 if (off >= 0) 14502 pszAnnotation = iemNativeDbgVCpuOffsetToName(offVCpu + (uint32_t)off); 14503 } 14504 } 14505 # endif 14506 14507 size_t const cchOp = strlen(pInstr->op_str); 14476 14508 # if defined(RT_ARCH_AMD64) 14477 pHlp->pfnPrintf(pHlp, " %p: %.*Rhxs %-7s %s\n", 14478 pNativeCur, pInstr->size, pNativeCur, pInstr->mnemonic, pInstr->op_str); 14509 if (pszAnnotation) 14510 pHlp->pfnPrintf(pHlp, " %p: %.*Rhxs %-7s %s%*s ; %s\n", 14511 pNativeCur, pInstr->size, pNativeCur, pInstr->mnemonic, pInstr->op_str, 14512 cchOp < 55 ? 55 - cchOp : 0, "", pszAnnotation); 14513 else 14514 pHlp->pfnPrintf(pHlp, " %p: %.*Rhxs %-7s %s\n", 14515 pNativeCur, pInstr->size, pNativeCur, pInstr->mnemonic, pInstr->op_str); 14516 14479 14517 # else 14480 pHlp->pfnPrintf(pHlp, " %p: %#010RX32 %-7s %s\n", 14481 pNativeCur, *pNativeCur, pInstr->mnemonic, pInstr->op_str); 14518 if (pszAnnotation) 14519 pHlp->pfnPrintf(pHlp, " %p: %#010RX32 %-7s %s%*s ; %s\n", 14520 pNativeCur, *pNativeCur, pInstr->mnemonic, pInstr->op_str, 14521 cchOp < 55 ? 55 - cchOp : 0, "", pszAnnotation); 14522 else 14523 pHlp->pfnPrintf(pHlp, " %p: %#010RX32 %-7s %s\n", 14524 pNativeCur, *pNativeCur, pInstr->mnemonic, pInstr->op_str); 14482 14525 # endif 14483 14526 offNative += pInstr->size / sizeof(*pNativeCur);
Note:
See TracChangeset
for help on using the changeset viewer.

