Changeset 105736 in vbox for trunk/src/VBox/Disassembler
- Timestamp:
- Aug 19, 2024 5:41:36 PM (6 months ago)
- svn:sync-xref-src-repo-rev:
- 164441
- Location:
- trunk/src/VBox/Disassembler
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Disassembler/DisasmCore-armv8.cpp
r105734 r105736 273 273 static int disArmV8ParseCond(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit) 274 274 { 275 RT_NOREF(pInsnClass, pParam, pf64Bit); 276 pDis->armv8.enmCond = (ARMV8INSTRCOND)disArmV8ExtractBitVecFromInsn(u32Insn, pInsnParm->idxBitStart, pInsnParm->cBits); 277 return VINF_SUCCESS; 278 } 279 280 281 static int disArmV8ParsePState(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit) 282 { 275 283 RT_NOREF(pDis, u32Insn, pInsnClass, pParam, pInsnParm, pf64Bit); 276 284 //AssertFailed(); … … 280 288 281 289 282 static int disArmV8ParsePState(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit)283 {284 RT_NOREF(pDis, u32Insn, pInsnClass, pParam, pInsnParm, pf64Bit);285 //AssertFailed();286 /** @todo */287 return VINF_SUCCESS;288 }289 290 291 290 static int disArmV8ParseSysReg(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit) 292 291 { … … 296 295 /* Assumes a op0:op1:CRn:CRm:op2 encoding in the instruction starting at the given bit position. */ 297 296 uint32_t u32ImmRaw = disArmV8ExtractBitVecFromInsn(u32Insn, pInsnParm->idxBitStart, pInsnParm->cBits); 298 pParam->armv8.Reg.idSysReg = ARMV8_AARCH64_SYSREG_ID_CREATE _DYN(2 + ((u32ImmRaw >> 14) & 0x1),299 300 301 302 297 pParam->armv8.Reg.idSysReg = ARMV8_AARCH64_SYSREG_ID_CREATE(2 + ((u32ImmRaw >> 14) & 0x1), 298 (u32ImmRaw >> 11) & 0x7, 299 (u32ImmRaw >> 7) & 0xf, 300 (u32ImmRaw >> 3) & 0xf, 301 u32ImmRaw & 0x7); 303 302 pParam->armv8.cb = 0; 304 303 pParam->fUse |= DISUSE_REG_SYSTEM; … … 341 340 pDis->aParams[2].armv8.fParam = pOp->Opc.fParam3; 342 341 pDis->aParams[3].armv8.fParam = pOp->Opc.fParam4; 343 pDis->armv8.pInsnClass = pInsnClass; 342 pDis->armv8.pInsnClass = pInsnClass; 343 pDis->armv8.enmCond = kArmv8InstrCond_Al; 344 344 345 345 pDis->pCurInstr = &pOp->Opc; -
trunk/src/VBox/Disassembler/DisasmFormatArmV8.cpp
r105731 r105736 55 55 "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28", "x29", "x30", "xzr" 56 56 }; 57 static const char g_aszArmV8Cond[16][4] = 58 { 59 "eq", "ne", "cs", "cc", "mi", "pl", "vs", "vc", "hi", "ls", "ge", "lt", "gt", "le", "al", "al" 60 }; 61 57 62 58 63 /** … … 583 588 PUT_PSZ(pOp->pszOpcode); 584 589 590 /* Add any conditionals. */ 591 if (pDis->armv8.enmCond != kArmv8InstrCond_Al) 592 { 593 PUT_C('.'); 594 Assert((uint16_t)pDis->armv8.enmCond < RT_ELEMENTS(g_aszArmV8Cond)); 595 PUT_STR(g_aszArmV8Cond[pDis->armv8.enmCond], sizeof(g_aszArmV8Cond[0]) - 1); 596 } 597 585 598 /* 586 599 * Format the parameters. -
trunk/src/VBox/Disassembler/DisasmTables-armv8-a64.cpp
r105731 r105736 170 170 /* B.cond/BC.cond */ 171 171 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(g_ArmV8A64CondBr) 172 DIS_ARMV8_OP(0xff000010, 0x54000000, "b .",OP_ARMV8_A64_B, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW),173 DIS_ARMV8_OP(0xff000010, 0x54000010, "bc ." ,OP_ARMV8_A64_BC, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW),172 DIS_ARMV8_OP(0xff000010, 0x54000000, "b", OP_ARMV8_A64_B, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW), 173 DIS_ARMV8_OP(0xff000010, 0x54000010, "bc" , OP_ARMV8_A64_BC, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW), 174 174 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_PARAMS(g_ArmV8A64CondBr, 0 /*fClass*/, 175 175 kDisArmV8OpcDecodeNop, RT_BIT_32(4), 4)
Note:
See TracChangeset
for help on using the changeset viewer.