vbox的更動 8234 路徑 trunk/src/VBox/Disassembler/DisasmReg.cpp
- 時間撮記:
- 2008-4-21 下午02:29:54 (17 年 以前)
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/Disassembler/DisasmReg.cpp
r8168 r8234 207 207 return 8; 208 208 209 case OP_PARM_p: 209 case OP_PARM_p: /* far pointer */ 210 210 if (pCpu->addrmode == CPUMODE_32BIT) 211 return 8; 212 else 213 return 4; 211 return 6; /* 16:32 */ 212 else 213 if (pCpu->addrmode == CPUMODE_64BIT) 214 return 12; /* 16:64 */ 215 else 216 return 4; /* 16:16 */ 214 217 215 218 default: … … 232 235 { 233 236 /* Guess segment register by parameter type. */ 234 if (pParam->flags & USE_REG_GEN32) 235 { 236 if (pParam->base.reg_gen32 == USE_REG_ESP || pParam->base.reg_gen32 == USE_REG_EBP) 237 return USE_REG_SS; 238 } 239 else 240 if (pParam->flags & USE_REG_GEN16) 241 { 242 if (pParam->base.reg_gen16 == USE_REG_SP || pParam->base.reg_gen16 == USE_REG_BP) 237 if (pParam->flags & (USE_REG_GEN32|USE_REG_GEN64|USE_REG_GEN16)) 238 { 239 AssertCompile(USE_REG_ESP == USE_REG_RSP); 240 AssertCompile(USE_REG_EBP == USE_REG_RBP); 241 AssertCompile(USE_REG_ESP == USE_REG_SP); 242 AssertCompile(USE_REG_EBP == USE_REG_BP); 243 if (pParam->base.reg_gen == USE_REG_ESP || pParam->base.reg_gen == USE_REG_EBP) 243 244 return USE_REG_SS; 244 245 } … … 486 487 { 487 488 pParamVal->flags |= PARAM_VAL8; 488 if (VBOX_FAILURE(DISFetchReg8(pCtx, pParam->base.reg_gen 8, &pParamVal->val.val8))) return VERR_INVALID_PARAMETER;489 if (VBOX_FAILURE(DISFetchReg8(pCtx, pParam->base.reg_gen, &pParamVal->val.val8))) return VERR_INVALID_PARAMETER; 489 490 } 490 491 else … … 492 493 { 493 494 pParamVal->flags |= PARAM_VAL16; 494 if (VBOX_FAILURE(DISFetchReg16(pCtx, pParam->base.reg_gen 16, &pParamVal->val.val16))) return VERR_INVALID_PARAMETER;495 if (VBOX_FAILURE(DISFetchReg16(pCtx, pParam->base.reg_gen, &pParamVal->val.val16))) return VERR_INVALID_PARAMETER; 495 496 } 496 497 else … … 498 499 { 499 500 pParamVal->flags |= PARAM_VAL32; 500 if (VBOX_FAILURE(DISFetchReg32(pCtx, pParam->base.reg_gen 32, &pParamVal->val.val32))) return VERR_INVALID_PARAMETER;501 if (VBOX_FAILURE(DISFetchReg32(pCtx, pParam->base.reg_gen, &pParamVal->val.val32))) return VERR_INVALID_PARAMETER; 501 502 } 502 503 else … … 504 505 { 505 506 pParamVal->flags |= PARAM_VAL64; 506 if (VBOX_FAILURE(DISFetchReg64(pCtx, pParam->base.reg_gen 64, &pParamVal->val.val64))) return VERR_INVALID_PARAMETER;507 if (VBOX_FAILURE(DISFetchReg64(pCtx, pParam->base.reg_gen, &pParamVal->val.val64))) return VERR_INVALID_PARAMETER; 507 508 } 508 509 else { … … 581 582 pParamVal->flags |= PARAM_VAL8; 582 583 pParamVal->size = sizeof(uint8_t); 583 if (VBOX_FAILURE(DISFetchReg8(pCtx, pParam->base.reg_gen 8, &pParamVal->val.val8))) return VERR_INVALID_PARAMETER;584 if (VBOX_FAILURE(DISFetchReg8(pCtx, pParam->base.reg_gen, &pParamVal->val.val8))) return VERR_INVALID_PARAMETER; 584 585 } 585 586 else … … 588 589 pParamVal->flags |= PARAM_VAL16; 589 590 pParamVal->size = sizeof(uint16_t); 590 if (VBOX_FAILURE(DISFetchReg16(pCtx, pParam->base.reg_gen 16, &pParamVal->val.val16))) return VERR_INVALID_PARAMETER;591 if (VBOX_FAILURE(DISFetchReg16(pCtx, pParam->base.reg_gen, &pParamVal->val.val16))) return VERR_INVALID_PARAMETER; 591 592 } 592 593 else … … 595 596 pParamVal->flags |= PARAM_VAL32; 596 597 pParamVal->size = sizeof(uint32_t); 597 if (VBOX_FAILURE(DISFetchReg32(pCtx, pParam->base.reg_gen 32, &pParamVal->val.val32))) return VERR_INVALID_PARAMETER;598 if (VBOX_FAILURE(DISFetchReg32(pCtx, pParam->base.reg_gen, &pParamVal->val.val32))) return VERR_INVALID_PARAMETER; 598 599 } 599 600 else … … 602 603 pParamVal->flags |= PARAM_VAL64; 603 604 pParamVal->size = sizeof(uint64_t); 604 if (VBOX_FAILURE(DISFetchReg64(pCtx, pParam->base.reg_gen 64, &pParamVal->val.val64))) return VERR_INVALID_PARAMETER;605 if (VBOX_FAILURE(DISFetchReg64(pCtx, pParam->base.reg_gen, &pParamVal->val.val64))) return VERR_INVALID_PARAMETER; 605 606 } 606 607 else … … 698 699 { 699 700 uint8_t *pu8Reg; 700 if (VBOX_SUCCESS(DISPtrReg8(pCtx, pParam->base.reg_gen 8, &pu8Reg)))701 if (VBOX_SUCCESS(DISPtrReg8(pCtx, pParam->base.reg_gen, &pu8Reg))) 701 702 { 702 703 *pcbSize = sizeof(uint8_t); … … 709 710 { 710 711 uint16_t *pu16Reg; 711 if (VBOX_SUCCESS(DISPtrReg16(pCtx, pParam->base.reg_gen 16, &pu16Reg)))712 if (VBOX_SUCCESS(DISPtrReg16(pCtx, pParam->base.reg_gen, &pu16Reg))) 712 713 { 713 714 *pcbSize = sizeof(uint16_t); … … 720 721 { 721 722 uint32_t *pu32Reg; 722 if (VBOX_SUCCESS(DISPtrReg32(pCtx, pParam->base.reg_gen 32, &pu32Reg)))723 if (VBOX_SUCCESS(DISPtrReg32(pCtx, pParam->base.reg_gen, &pu32Reg))) 723 724 { 724 725 *pcbSize = sizeof(uint32_t); … … 731 732 { 732 733 uint64_t *pu64Reg; 733 if (VBOX_SUCCESS(DISPtrReg64(pCtx, pParam->base.reg_gen 64, &pu64Reg)))734 if (VBOX_SUCCESS(DISPtrReg64(pCtx, pParam->base.reg_gen, &pu64Reg))) 734 735 { 735 736 *pcbSize = sizeof(uint64_t);
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器