MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / GetShifted

Function GetShifted

arch/armv7/il.cpp:128–161  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126
127
128static ExprId GetShifted(LowLevelILFunction& il, Register reg, uint32_t ShiftAmount, Shift shift)
129{
130 if (ShiftAmount == 0)
131 return il.Register(get_register_size(reg), reg);
132
133 switch (shift)
134 {
135 case SHIFT_NONE:
136 return il.Register(get_register_size(reg), reg);
137 case SHIFT_LSR:
138 return il.LogicalShiftRight(get_register_size(reg),
139 il.Register(get_register_size(reg), reg),
140 il.Const(1, ShiftAmount));
141 case SHIFT_LSL:
142 return il.ShiftLeft(get_register_size(reg),
143 il.Register(get_register_size(reg), reg),
144 il.Const(1, ShiftAmount));
145 case SHIFT_ASR:
146 return il.ArithShiftRight(get_register_size(reg),
147 il.Register(get_register_size(reg), reg),
148 il.Const(1, ShiftAmount));
149 case SHIFT_ROR:
150 return il.RotateRight(get_register_size(reg),
151 il.Register(get_register_size(reg), reg),
152 il.Const(1, ShiftAmount));
153 case SHIFT_RRX:
154 //RRX can only shift 1 at a time
155 return il.RotateRightCarry(get_register_size(reg),
156 il.Register(get_register_size(reg), reg),
157 il.Const(1, 1), il.Flag(IL_FLAG_C));
158 default:
159 return 0;
160 }
161}
162
163
164static ExprId GetShiftedOffset(LowLevelILFunction& il, InstructionOperand& op)

Callers 2

GetShiftedOffsetFunction · 0.85
GetShiftedRegisterFunction · 0.85

Calls 9

get_register_sizeFunction · 0.50
RegisterMethod · 0.45
LogicalShiftRightMethod · 0.45
ConstMethod · 0.45
ShiftLeftMethod · 0.45
ArithShiftRightMethod · 0.45
RotateRightMethod · 0.45
RotateRightCarryMethod · 0.45
FlagMethod · 0.45

Tested by

no test coverage detected