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

Method new_expr

rust/src/high_level_il/instruction.rs:61–553  ·  view source on GitHub ↗

TODO: I need HighLevelILExpression YESTERDAY!!!!

(
        function: Ref<HighLevelILFunction>,
        expr_index: HighLevelInstructionIndex,
    )

Source from the content-addressed store, hash-verified

59
60 // TODO: I need HighLevelILExpression YESTERDAY!!!!
61 pub(crate) fn new_expr(
62 function: Ref<HighLevelILFunction>,
63 expr_index: HighLevelInstructionIndex,
64 ) -> Self {
65 let op =
66 unsafe { BNGetHighLevelILByIndex(function.handle, expr_index.0, function.full_ast) };
67 use BNHighLevelILOperation::*;
68 use HighLevelILInstructionKind as Op;
69 let kind = match op.operation {
70 HLIL_NOP => Op::Nop,
71 HLIL_BREAK => Op::Break,
72 HLIL_CONTINUE => Op::Continue,
73 HLIL_NORET => Op::Noret,
74 HLIL_UNREACHABLE => Op::Unreachable,
75 HLIL_BP => Op::Bp,
76 HLIL_UNDEF => Op::Undef,
77 HLIL_FORCE_VER | HLIL_FORCE_VER_SSA | HLIL_ASSERT | HLIL_ASSERT_SSA => Op::Undef,
78 HLIL_UNIMPL => Op::Unimpl,
79 HLIL_ADC => Op::Adc(BinaryOpCarry {
80 left: op.operands[0] as usize,
81 right: op.operands[1] as usize,
82 carry: op.operands[2] as usize,
83 }),
84 HLIL_SBB => Op::Sbb(BinaryOpCarry {
85 left: op.operands[0] as usize,
86 right: op.operands[1] as usize,
87 carry: op.operands[2] as usize,
88 }),
89 HLIL_RLC => Op::Rlc(BinaryOpCarry {
90 left: op.operands[0] as usize,
91 right: op.operands[1] as usize,
92 carry: op.operands[2] as usize,
93 }),
94 HLIL_RRC => Op::Rrc(BinaryOpCarry {
95 left: op.operands[0] as usize,
96 right: op.operands[1] as usize,
97 carry: op.operands[2] as usize,
98 }),
99 HLIL_ADD => Op::Add(BinaryOp {
100 left: op.operands[0] as usize,
101 right: op.operands[1] as usize,
102 }),
103 HLIL_SUB => Op::Sub(BinaryOp {
104 left: op.operands[0] as usize,
105 right: op.operands[1] as usize,
106 }),
107 HLIL_AND => Op::And(BinaryOp {
108 left: op.operands[0] as usize,
109 right: op.operands[1] as usize,
110 }),
111 HLIL_OR => Op::Or(BinaryOp {
112 left: op.operands[0] as usize,
113 right: op.operands[1] as usize,
114 }),
115 HLIL_XOR => Op::Xor(BinaryOp {
116 left: op.operands[0] as usize,
117 right: op.operands[1] as usize,
118 }),

Callers

nothing calls this directly

Calls 15

ArrayIndexClass · 0.85
ArrayIndexSsaClass · 0.85
AssignClass · 0.85
AssignMemSsaClass · 0.85
AssignUnpackClass · 0.85
AssignUnpackMemSsaClass · 0.85
BlockClass · 0.85
TailcallClass · 0.85
CaseClass · 0.85
UnimplMemClass · 0.85
DerefFieldSsaClass · 0.85
get_member_indexFunction · 0.85

Tested by

no test coverage detected