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

Method from_raw

rust/src/low_level_il/expression.rs:335–457  ·  view source on GitHub ↗

TODO: Document what "unchecked" means and how to consume this safely.

(
        function: &'func LowLevelILFunction<A, M, F>,
        op: BNLowLevelILInstruction,
    )

Source from the content-addressed store, hash-verified

333{
334 // TODO: Document what "unchecked" means and how to consume this safely.
335 pub(crate) unsafe fn from_raw(
336 function: &'func LowLevelILFunction<A, M, F>,
337 op: BNLowLevelILInstruction,
338 ) -> Self {
339 use binaryninjacore_sys::BNLowLevelILOperation::*;
340
341 match op.operation {
342 LLIL_LOAD | LLIL_LOAD_SSA => {
343 LowLevelILExpressionKind::Load(Operation::new(function, op))
344 }
345 LLIL_POP => LowLevelILExpressionKind::Pop(Operation::new(function, op)),
346 LLIL_REG | LLIL_REG_SSA | LLIL_REG_SSA_PARTIAL => {
347 LowLevelILExpressionKind::Reg(Operation::new(function, op))
348 }
349 LLIL_REG_SPLIT | LLIL_REG_SPLIT_SSA => {
350 LowLevelILExpressionKind::RegSplit(Operation::new(function, op))
351 }
352 LLIL_CONST => LowLevelILExpressionKind::Const(Operation::new(function, op)),
353 LLIL_CONST_PTR => LowLevelILExpressionKind::ConstPtr(Operation::new(function, op)),
354 LLIL_FLAG | LLIL_FLAG_SSA => {
355 LowLevelILExpressionKind::Flag(Operation::new(function, op))
356 }
357 LLIL_FLAG_BIT | LLIL_FLAG_BIT_SSA => {
358 LowLevelILExpressionKind::FlagBit(Operation::new(function, op))
359 }
360 LLIL_EXTERN_PTR => LowLevelILExpressionKind::ExternPtr(Operation::new(function, op)),
361
362 LLIL_REG_STACK_POP => {
363 LowLevelILExpressionKind::RegStackPop(Operation::new(function, op))
364 }
365
366 LLIL_ADD => LowLevelILExpressionKind::Add(Operation::new(function, op)),
367 LLIL_ADC => LowLevelILExpressionKind::Adc(Operation::new(function, op)),
368 LLIL_SUB => LowLevelILExpressionKind::Sub(Operation::new(function, op)),
369 LLIL_SBB => LowLevelILExpressionKind::Sbb(Operation::new(function, op)),
370 LLIL_AND => LowLevelILExpressionKind::And(Operation::new(function, op)),
371 LLIL_OR => LowLevelILExpressionKind::Or(Operation::new(function, op)),
372 LLIL_XOR => LowLevelILExpressionKind::Xor(Operation::new(function, op)),
373 LLIL_LSL => LowLevelILExpressionKind::Lsl(Operation::new(function, op)),
374 LLIL_LSR => LowLevelILExpressionKind::Lsr(Operation::new(function, op)),
375 LLIL_ASR => LowLevelILExpressionKind::Asr(Operation::new(function, op)),
376 LLIL_ROL => LowLevelILExpressionKind::Rol(Operation::new(function, op)),
377 LLIL_RLC => LowLevelILExpressionKind::Rlc(Operation::new(function, op)),
378 LLIL_ROR => LowLevelILExpressionKind::Ror(Operation::new(function, op)),
379 LLIL_RRC => LowLevelILExpressionKind::Rrc(Operation::new(function, op)),
380 LLIL_MUL => LowLevelILExpressionKind::Mul(Operation::new(function, op)),
381
382 LLIL_MULU_DP => LowLevelILExpressionKind::MuluDp(Operation::new(function, op)),
383 LLIL_MULS_DP => LowLevelILExpressionKind::MulsDp(Operation::new(function, op)),
384
385 LLIL_DIVU => LowLevelILExpressionKind::Divu(Operation::new(function, op)),
386 LLIL_DIVS => LowLevelILExpressionKind::Divs(Operation::new(function, op)),
387
388 LLIL_DIVU_DP => LowLevelILExpressionKind::DivuDp(Operation::new(function, op)),
389 LLIL_DIVS_DP => LowLevelILExpressionKind::DivsDp(Operation::new(function, op)),
390
391 LLIL_MODU => LowLevelILExpressionKind::Modu(Operation::new(function, op)),
392 LLIL_MODS => LowLevelILExpressionKind::Mods(Operation::new(function, op)),

Callers

nothing calls this directly

Calls 10

RegSplitClass · 0.85
FlagBitClass · 0.85
RegStackPopClass · 0.85
UnimplMemClass · 0.85
LoadClass · 0.70
PopClass · 0.70
RegClass · 0.70
ConstClass · 0.70
FlagClass · 0.70
ExternPtrClass · 0.50

Tested by

no test coverage detected