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

Function DecodeT2LoadImm12

arch/ARM/ARMDisassembler.c:3770–3846  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3768}
3769
3770static DecodeStatus DecodeT2LoadImm12(MCInst *Inst, unsigned Insn,
3771 uint64_t Address, const void* Decoder)
3772{
3773 DecodeStatus S = MCDisassembler_Success;
3774 unsigned Rn = fieldFromInstruction_4(Insn, 16, 4);
3775 unsigned Rt = fieldFromInstruction_4(Insn, 12, 4);
3776 unsigned imm = fieldFromInstruction_4(Insn, 0, 12);
3777 bool hasMP = ARM_getFeatureBits(Inst->csh->mode, ARM_FeatureMP);
3778 bool hasV7Ops = ARM_getFeatureBits(Inst->csh->mode, ARM_HasV7Ops);
3779
3780 imm |= (Rn << 13);
3781
3782 if (Rn == 15) {
3783 switch (MCInst_getOpcode(Inst)) {
3784 case ARM_t2LDRi12:
3785 MCInst_setOpcode(Inst, ARM_t2LDRpci);
3786 break;
3787 case ARM_t2LDRHi12:
3788 MCInst_setOpcode(Inst, ARM_t2LDRHpci);
3789 break;
3790 case ARM_t2LDRSHi12:
3791 MCInst_setOpcode(Inst, ARM_t2LDRSHpci);
3792 break;
3793 case ARM_t2LDRBi12:
3794 MCInst_setOpcode(Inst, ARM_t2LDRBpci);
3795 break;
3796 case ARM_t2LDRSBi12:
3797 MCInst_setOpcode(Inst, ARM_t2LDRSBpci);
3798 break;
3799 case ARM_t2PLDi12:
3800 MCInst_setOpcode(Inst, ARM_t2PLDpci);
3801 break;
3802 case ARM_t2PLIi12:
3803 MCInst_setOpcode(Inst, ARM_t2PLIpci);
3804 break;
3805 default:
3806 return MCDisassembler_Fail;
3807 }
3808 return DecodeT2LoadLabel(Inst, Insn, Address, Decoder);
3809 }
3810
3811 if (Rt == 15) {
3812 switch (MCInst_getOpcode(Inst)) {
3813 case ARM_t2LDRSHi12:
3814 return MCDisassembler_Fail;
3815 case ARM_t2LDRHi12:
3816 MCInst_setOpcode(Inst, ARM_t2PLDWi12);
3817 break;
3818 case ARM_t2LDRSBi12:
3819 MCInst_setOpcode(Inst, ARM_t2PLIi12);
3820 break;
3821 default:
3822 break;
3823 }
3824 }
3825
3826 switch (MCInst_getOpcode(Inst)) {
3827 case ARM_t2PLDi12:

Callers

nothing calls this directly

Calls 7

ARM_getFeatureBitsFunction · 0.85
MCInst_getOpcodeFunction · 0.85
MCInst_setOpcodeFunction · 0.85
DecodeT2LoadLabelFunction · 0.85
DecodeT2AddrModeImm12Function · 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…