Changeset 105807 in vbox for trunk/src/VBox/Disassembler
- Timestamp:
- Aug 22, 2024 7:41:30 AM (6 months ago)
- svn:sync-xref-src-repo-rev:
- 164519
- Location:
- trunk/src/VBox/Disassembler
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Disassembler/DisasmInternal-armv8.h
r105806 r105807 100 100 typedef const DISARMV8INSNPARAM *PCDISARMV8INSNPARAM; 101 101 102 #define DIS_ARMV8_INSN_ PARAM_NONE{ kDisParmParseNop, 0, 0, DIS_ARMV8_INSN_PARAM_UNSET }103 #define DIS_ARMV8_INSN_ PARAM_CREATE(a_idxParse, a_idxBitStart, a_cBits, a_idxParam) \102 #define DIS_ARMV8_INSN_DECODE_TERM { kDisParmParseNop, 0, 0, DIS_ARMV8_INSN_PARAM_UNSET } 103 #define DIS_ARMV8_INSN_DECODE(a_idxParse, a_idxBitStart, a_cBits, a_idxParam) \ 104 104 { a_idxParse, a_idxBitStart, a_cBits, a_idxParam } 105 105 … … 190 190 #define DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_4(a_Name, a_fFixedInsn, a_fClass, a_enmOpcDecode, a_fMask, a_cShift, \ 191 191 a_enmParamType1, a_enmParamType2, a_enmParamType3, a_enmParamType4) \ 192 DIS_ARMV8_INSN_ PARAM_NONE\192 DIS_ARMV8_INSN_DECODE_TERM \ 193 193 }; \ 194 194 static const DISARMV8INSNCLASS g_aArmV8A64Insn ## a_Name = { { kDisArmV8DecodeType_InsnClass, \ -
trunk/src/VBox/Disassembler/DisasmTables-armv8-a64.cpp
r105806 r105807 61 61 DIS_ARMV8_OP(0x00000000, "udf" , OP_ARMV8_A64_UDF, DISOPTYPE_INVALID) 62 62 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Rsvd) 63 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 0, 16, 0 /*idxParam*/),63 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 0, 16, 0 /*idxParam*/), 64 64 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(Rsvd, 0xffff0000 /*fFixedInsn*/, 0 /*fClass*/, 65 65 kDisArmV8OpcDecodeNop, 0xffff0000, 16, … … 71 71 DIS_ARMV8_OP(0x90000000, "adrp" , OP_ARMV8_A64_ADRP, DISOPTYPE_HARMLESS) 72 72 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Adr) 73 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),74 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImmAdr, 0, 0, 1 /*idxParam*/),73 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 74 DIS_ARMV8_INSN_DECODE(kDisParmParseImmAdr, 0, 0, 1 /*idxParam*/), 75 75 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(Adr, 0x9f000000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT, 76 76 kDisArmV8OpcDecodeNop, RT_BIT_32(31), 31, … … 85 85 DIS_ARMV8_OP(0x71000000, "subs" , OP_ARMV8_A64_SUBS, DISOPTYPE_HARMLESS), 86 86 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(AddSubImm) 87 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),88 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 5, 5, 1 /*idxParam*/),89 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 10, 12, 2 /*idxParam*/),90 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseSh12, 22, 1, 2 /*idxParam*/),87 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 88 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 5, 5, 1 /*idxParam*/), 89 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 10, 12, 2 /*idxParam*/), 90 DIS_ARMV8_INSN_DECODE(kDisParmParseSh12, 22, 1, 2 /*idxParam*/), 91 91 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(AddSubImm, 0x7f800000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, 92 92 kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29, … … 101 101 DIS_ARMV8_OP(0x6b000000, "subs" , OP_ARMV8_A64_SUBS, DISOPTYPE_HARMLESS), 102 102 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(AddSubShiftReg) 103 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),104 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 5, 5, 1 /*idxParam*/),105 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 16, 5, 2 /*idxParam*/),106 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseShift, 22, 2, 2 /*idxParam*/),107 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseShiftAmount, 10, 6, 2 /*idxParam*/),103 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 104 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 5, 5, 1 /*idxParam*/), 105 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 16, 5, 2 /*idxParam*/), 106 DIS_ARMV8_INSN_DECODE(kDisParmParseShift, 22, 2, 2 /*idxParam*/), 107 DIS_ARMV8_INSN_DECODE(kDisParmParseShiftAmount, 10, 6, 2 /*idxParam*/), 108 108 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(AddSubShiftReg, 0x7f200000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, 109 109 kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29, … … 118 118 DIS_ARMV8_OP(0x72000000, "ands" , OP_ARMV8_A64_ANDS, DISOPTYPE_HARMLESS), 119 119 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LogicalImm) 120 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),121 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 5, 5, 1 /*idxParam*/),122 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImmsImmrN, 10, 13, 2 /*idxParam*/),120 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 121 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 5, 5, 1 /*idxParam*/), 122 DIS_ARMV8_INSN_DECODE(kDisParmParseImmsImmrN, 10, 13, 2 /*idxParam*/), 123 123 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(LogicalImm, 0x7f800000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, 124 124 kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29, … … 133 133 DIS_ARMV8_OP(0x72800000, "movk" , OP_ARMV8_A64_MOVK, DISOPTYPE_HARMLESS), 134 134 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(MoveWide) 135 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),136 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 5, 16, 1 /*idxParam*/),137 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseHw, 21, 2, 1 /*idxParam*/),135 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 136 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 5, 16, 1 /*idxParam*/), 137 DIS_ARMV8_INSN_DECODE(kDisParmParseHw, 21, 2, 1 /*idxParam*/), 138 138 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(MoveWide, 0x7f800000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, 139 139 kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29, … … 148 148 INVALID_OPCODE, 149 149 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Bitfield) 150 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),151 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 5, 5, 1 /*idxParam*/),152 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 16, 6, 2 /*idxParam*/),153 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 10, 6, 3 /*idxParam*/),150 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 151 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 5, 5, 1 /*idxParam*/), 152 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 16, 6, 2 /*idxParam*/), 153 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 10, 6, 3 /*idxParam*/), 154 154 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_4(Bitfield, 0x7f800000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF | DISARMV8INSNCLASS_F_N_FORCED_1_ON_64BIT, 155 155 kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29, … … 188 188 DIS_ARMV8_OP(0x54000010, "bc" , OP_ARMV8_A64_BC, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_COND_CONTROLFLOW), 189 189 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(CondBr) 190 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseCond, 0, 4, DIS_ARMV8_INSN_PARAM_UNSET),191 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImmRel, 5, 19, 0 /*idxParam*/),190 DIS_ARMV8_INSN_DECODE(kDisParmParseCond, 0, 4, DIS_ARMV8_INSN_PARAM_UNSET), 191 DIS_ARMV8_INSN_DECODE(kDisParmParseImmRel, 5, 19, 0 /*idxParam*/), 192 192 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(CondBr, 0xff000010 /*fFixedInsn*/, 0 /*fClass*/, 193 193 kDisArmV8OpcDecodeNop, RT_BIT_32(4), 4, … … 207 207 DIS_ARMV8_OP(0xd4a00003, "dcps3", OP_ARMV8_A64_DCPS3, DISOPTYPE_CONTROLFLOW | DISOPTYPE_INTERRUPT), 208 208 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Excp) 209 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 5, 16, 0 /*idxParam*/),209 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 5, 16, 0 /*idxParam*/), 210 210 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(Excp, 0xffe0001f /*fFixedInsn*/, 0 /*fClass*/, 211 211 kDisArmV8OpcDecodeLookup, 0xffe0001f, 0, … … 218 218 DIS_ARMV8_OP(0x54000010, "wfit" , OP_ARMV8_A64_WFIT, DISOPTYPE_HARMLESS), /* FEAT_WFxT */ 219 219 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(SysReg) 220 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),220 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 221 221 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(SysReg, 0xffffffe0 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT, 222 222 kDisArmV8OpcDecodeNop, 0xfe0, 5, … … 245 245 DIS_ARMV8_OP(0xd50330bf, "dmb", OP_ARMV8_A64_DMB, DISOPTYPE_HARMLESS), 246 246 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(DecBarriers) 247 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 8, 4, 0 /*idxParam*/),247 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 8, 4, 0 /*idxParam*/), 248 248 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(DecBarriers, 0xfffff0ff /*fFixedInsn*/, 0 /*fClass*/, 249 249 kDisArmV8OpcDecodeNop, RT_BIT_32(5), 5, … … 268 268 DIS_ARMV8_OP(0xd503305f, "msr", OP_ARMV8_A64_MSR, DISOPTYPE_HARMLESS), 269 269 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(PState) 270 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParsePState, 0, 0, 0 /*idxParam*/), /* This is special for the MSR instruction. */271 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 8, 4, 1 /*idxParam*/), /* CRm field encodes the immediate value */270 DIS_ARMV8_INSN_DECODE(kDisParmParsePState, 0, 0, 0 /*idxParam*/), /* This is special for the MSR instruction. */ 271 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 8, 4, 1 /*idxParam*/), /* CRm field encodes the immediate value */ 272 272 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(PState, 0xfffff0ff /*fFixedInsn*/, 0 /*fClass*/, 273 273 kDisArmV8OpcDecodeNop, 0, 0, … … 280 280 DIS_ARMV8_OP(0xd5233160, "ttest", OP_ARMV8_A64_TTEST, DISOPTYPE_HARMLESS), /* FEAT_TME */ 281 281 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(SysResult) 282 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),282 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 283 283 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(SysResult, 0xfffffffe /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT, 284 284 kDisArmV8OpcDecodeNop, RT_BIT_32(8) | RT_BIT_32(9) | RT_BIT_32(10) | RT_BIT_32(11), 8, … … 290 290 DIS_ARMV8_OP(0xd5080000, "sys", OP_ARMV8_A64_SYS, DISOPTYPE_HARMLESS), 291 291 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Sys) 292 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 16, 3, 0 /*idxParam*/),293 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseCRnCRm, 8, 8, 1 /*idxParam*/),294 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 5, 3, 2 /*idxParam*/),295 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 3 /*idxParam*/),292 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 16, 3, 0 /*idxParam*/), 293 DIS_ARMV8_INSN_DECODE(kDisParmParseCRnCRm, 8, 8, 1 /*idxParam*/), 294 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 5, 3, 2 /*idxParam*/), 295 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 3 /*idxParam*/), 296 296 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_0(Sys, 0xfff80000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT, 297 297 kDisArmV8OpcDecodeNop, 0, 0); /** @todo */ … … 302 302 DIS_ARMV8_OP(0xd5280000, "sysl", OP_ARMV8_A64_SYSL, DISOPTYPE_HARMLESS), 303 303 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(SysL) 304 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),305 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 16, 3, 1 /*idxParam*/),306 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseCRnCRm, 8, 8, 2 /*idxParam*/),307 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImm, 5, 3, 3 /*idxParam*/),304 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 305 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 16, 3, 1 /*idxParam*/), 306 DIS_ARMV8_INSN_DECODE(kDisParmParseCRnCRm, 8, 8, 2 /*idxParam*/), 307 DIS_ARMV8_INSN_DECODE(kDisParmParseImm, 5, 3, 3 /*idxParam*/), 308 308 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_0(SysL, 0xfff80000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT, 309 309 kDisArmV8OpcDecodeNop, 0, 0); /** @todo */ … … 314 314 DIS_ARMV8_OP(0xd5100000, "msr", OP_ARMV8_A64_MSR, DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED), 315 315 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Msr) 316 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseSysReg, 5, 15, 0 /*idxParam*/),317 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 1 /*idxParam*/),316 DIS_ARMV8_INSN_DECODE(kDisParmParseSysReg, 5, 15, 0 /*idxParam*/), 317 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 1 /*idxParam*/), 318 318 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(Msr, 0xfff00000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT, 319 319 kDisArmV8OpcDecodeNop, 0, 0, … … 325 325 DIS_ARMV8_OP(0xd5300000, "mrs", OP_ARMV8_A64_MRS, DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED), 326 326 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Mrs) 327 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),328 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseSysReg, 5, 15, 1 /*idxParam*/),327 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 328 DIS_ARMV8_INSN_DECODE(kDisParmParseSysReg, 5, 15, 1 /*idxParam*/), 329 329 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(Mrs, 0xfff00000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT, 330 330 kDisArmV8OpcDecodeNop, 0, 0, … … 341 341 DIS_ARMV8_OP(0xd65f0c00, "retab", OP_ARMV8_A64_RETAB, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW), 342 342 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(BrBlrRet) 343 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 5, 5, 0 /*idxParam*/),343 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 5, 5, 0 /*idxParam*/), 344 344 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(BrBlrRet, 0xfffffc1f /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT, 345 345 kDisArmV8OpcDecodeLookup, 0xfffffc1f, 0, … … 373 373 DIS_ARMV8_OP(0x94000000, "bl", OP_ARMV8_A64_BL, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW), 374 374 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(UncondBrImm) 375 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImmRel, 0, 26, 0 /*idxParam*/),375 DIS_ARMV8_INSN_DECODE(kDisParmParseImmRel, 0, 26, 0 /*idxParam*/), 376 376 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(UncondBrImm, 0xfc000000 /*fFixedInsn*/, 0 /*fClass*/, 377 377 kDisArmV8OpcDecodeNop, RT_BIT_32(31), 31, … … 384 384 DIS_ARMV8_OP(0x35000000, "cbnz", OP_ARMV8_A64_CBNZ, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW), 385 385 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(CmpBrImm) 386 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),387 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImmRel, 5, 19, 1 /*idxParam*/),386 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 387 DIS_ARMV8_INSN_DECODE(kDisParmParseImmRel, 5, 19, 1 /*idxParam*/), 388 388 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(CmpBrImm, 0x7f000000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, 389 389 kDisArmV8OpcDecodeNop, RT_BIT_32(24), 24, … … 396 396 DIS_ARMV8_OP(0x37000000, "tbnz", OP_ARMV8_A64_TBNZ, DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW), 397 397 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(TestBrImm) 398 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),399 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImmTbz, 0, 0, 1 /*idxParam*/), /* Hardcoded bit offsets in parser. */400 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImmRel, 5, 14, 2 /*idxParam*/),398 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 399 DIS_ARMV8_INSN_DECODE(kDisParmParseImmTbz, 0, 0, 1 /*idxParam*/), /* Hardcoded bit offsets in parser. */ 400 DIS_ARMV8_INSN_DECODE(kDisParmParseImmRel, 5, 14, 2 /*idxParam*/), 401 401 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(TestBrImm, 0x7f000000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, /* Not an SF bit but has the same meaning. */ 402 402 kDisArmV8OpcDecodeNop, RT_BIT_32(24), 24, … … 430 430 DIS_ARMV8_OP(0x6a000000, "ands", OP_ARMV8_A64_ANDS, DISOPTYPE_HARMLESS) 431 431 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LogShiftRegN0) 432 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),433 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 5, 5, 1 /*idxParam*/),434 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 16, 5, 2 /*idxParam*/),435 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseShift, 22, 2, 2 /*idxParam*/),436 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseShiftAmount, 10, 6, 2 /*idxParam*/),432 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 433 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 5, 5, 1 /*idxParam*/), 434 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 16, 5, 2 /*idxParam*/), 435 DIS_ARMV8_INSN_DECODE(kDisParmParseShift, 22, 2, 2 /*idxParam*/), 436 DIS_ARMV8_INSN_DECODE(kDisParmParseShiftAmount, 10, 6, 2 /*idxParam*/), 437 437 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(LogShiftRegN0, 0x7f200000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, 438 438 kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29, … … 447 447 DIS_ARMV8_OP(0x6a200000, "bics", OP_ARMV8_A64_BICS, DISOPTYPE_HARMLESS) 448 448 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LogShiftRegN1) 449 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),450 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 5, 5, 1 /*idxParam*/),451 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 16, 5, 2 /*idxParam*/),452 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseShift, 22, 2, 2 /*idxParam*/),453 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseShiftAmount, 10, 6, 2 /*idxParam*/),449 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 450 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 5, 5, 1 /*idxParam*/), 451 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 16, 5, 2 /*idxParam*/), 452 DIS_ARMV8_INSN_DECODE(kDisParmParseShift, 22, 2, 2 /*idxParam*/), 453 DIS_ARMV8_INSN_DECODE(kDisParmParseShiftAmount, 10, 6, 2 /*idxParam*/), 454 454 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(LogShiftRegN1, 0x7f200000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF, 455 455 kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29, … … 490 490 DIS_ARMV8_OP(0xb9000000, "str", OP_ARMV8_A64_STR, DISOPTYPE_HARMLESS), 491 491 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdSt) 492 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseIs32Bit, 30, 1, DIS_ARMV8_INSN_PARAM_UNSET),493 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 0, 5, 0 /*idxParam*/),494 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseReg, 5, 5, 1 /*idxParam*/),495 DIS_ARMV8_INSN_ PARAM_CREATE(kDisParmParseImmMemOff, 10, 12, 1 /*idxParam*/),492 DIS_ARMV8_INSN_DECODE(kDisParmParseIs32Bit, 30, 1, DIS_ARMV8_INSN_PARAM_UNSET), 493 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 0, 5, 0 /*idxParam*/), 494 DIS_ARMV8_INSN_DECODE(kDisParmParseReg, 5, 5, 1 /*idxParam*/), 495 DIS_ARMV8_INSN_DECODE(kDisParmParseImmMemOff, 10, 12, 1 /*idxParam*/), 496 496 DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(LdSt, 0xbfc00000 /*fFixedInsn*/, 0 /*fClass*/, 497 497 kDisArmV8OpcDecodeLookup, 0xbfc00000, 0,
Note:
See TracChangeset
for help on using the changeset viewer.