Changeset 106758 in vbox for trunk/src/VBox/Disassembler/DisasmCore-armv8.cpp
- Timestamp:
- Oct 28, 2024 3:54:21 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Disassembler/DisasmCore-armv8.cpp
r106754 r106758 114 114 static FNDISPARSEARMV8 disArmV8ParseSf; 115 115 static FNDISPARSEARMV8 disArmV8ParseImmX16; 116 static FNDISPARSEARMV8 disArmV8ParseLdrPacImm; 117 static FNDISPARSEARMV8 disArmV8ParseLdrPacW; 116 118 /** @} */ 117 119 … … 172 174 disArmV8ParseImmHImmB, 173 175 disArmV8ParseSf, 174 disArmV8ParseImmX16 176 disArmV8ParseImmX16, 177 disArmV8ParseLdrPacImm, 178 disArmV8ParseLdrPacW 175 179 }; 176 180 … … 1030 1034 1031 1035 1036 static int disArmV8ParseLdrPacImm(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8OPCODE pOp, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit) 1037 { 1038 RT_NOREF(pDis, pOp, pInsnClass, pParam, pInsnParm, pf64Bit); 1039 1040 Assert(pInsnParm->cBits == 0); 1041 Assert(pInsnParm->idxBitStart == 0); 1042 Assert(pParam->armv8.enmType != kDisArmv8OpParmNone); 1043 1044 uint32_t u32 = disArmV8ExtractBitVecFromInsn(u32Insn, 12, 9) | ((u32Insn & RT_BIT_32(22)) >> 13); 1045 pParam->armv8.cb = sizeof(int16_t); 1046 pParam->armv8.u.offBase = disArmV8ExtractBitVecFromInsnSignExtend(u32, 0, 10) << 3; 1047 return VINF_SUCCESS; 1048 } 1049 1050 1051 static int disArmV8ParseLdrPacW(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8OPCODE pOp, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit) 1052 { 1053 RT_NOREF(pDis, pOp, pInsnClass, pParam, pInsnParm, pf64Bit); 1054 1055 Assert(pInsnParm->cBits == 1); 1056 Assert(pInsnParm->idxBitStart == 11); 1057 if (u32Insn & RT_BIT_32(11)) 1058 pParam->fUse |= DISUSE_PRE_INDEXED; 1059 return VINF_SUCCESS; 1060 } 1061 1062 1032 1063 static uint32_t disArmV8DecodeIllegal(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8INSNCLASS pInsnClass) 1033 1064 {
Note:
See TracChangeset
for help on using the changeset viewer.