MCPcopy Create free account
hub / github.com/capstone-engine/capstone / DecodeT2AddrModeImm12

Function DecodeT2AddrModeImm12

arch/ARM/ARMDisassembler.c:4114–4138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4112}
4113
4114static DecodeStatus DecodeT2AddrModeImm12(MCInst *Inst, unsigned Val,
4115 uint64_t Address, const void *Decoder)
4116{
4117 DecodeStatus S = MCDisassembler_Success;
4118 unsigned Rn = fieldFromInstruction_4(Val, 13, 4);
4119 unsigned imm = fieldFromInstruction_4(Val, 0, 12);
4120
4121 // Thumb stores cannot use PC as dest register.
4122 switch (MCInst_getOpcode(Inst)) {
4123 case ARM_t2STRi12:
4124 case ARM_t2STRBi12:
4125 case ARM_t2STRHi12:
4126 if (Rn == 15)
4127 return MCDisassembler_Fail;
4128 default:
4129 break;
4130 }
4131
4132 if (!Check(&S, DecodeGPRRegisterClass(Inst, Rn, Address, Decoder)))
4133 return MCDisassembler_Fail;
4134
4135 MCOperand_CreateImm0(Inst, imm);
4136
4137 return S;
4138}
4139
4140static DecodeStatus DecodeThumbAddSPImm(MCInst *Inst, uint16_t Insn,
4141 uint64_t Address, const void *Decoder)

Callers 1

DecodeT2LoadImm12Function · 0.85

Calls 4

MCInst_getOpcodeFunction · 0.85
MCOperand_CreateImm0Function · 0.85
CheckFunction · 0.70
DecodeGPRRegisterClassFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…