Low Level IL

Detailed Description

Classes

struct  BinaryNinja::LowLevelILLabel
 
class  BinaryNinja::LowLevelILFunction
 
struct  BinaryNinja::RegisterOrFlag
 
struct  BinaryNinja::SSARegister
 
struct  BinaryNinja::SSARegisterStack
 
struct  BinaryNinja::SSAFlag
 
struct  BinaryNinja::SSARegisterOrFlag
 
class  BinaryNinja::LowLevelILInstructionAccessException
 
class  BinaryNinja::LowLevelILIntegerList
 
class  BinaryNinja::LowLevelILIndexList
 
class  BinaryNinja::LowLevelILIndexMap
 
class  BinaryNinja::LowLevelILInstructionList
 
class  BinaryNinja::LowLevelILRegisterOrFlagList
 
class  BinaryNinja::LowLevelILSSARegisterList
 
class  BinaryNinja::LowLevelILSSARegisterStackList
 
class  BinaryNinja::LowLevelILSSAFlagList
 
class  BinaryNinja::LowLevelILSSARegisterOrFlagList
 
struct  BinaryNinja::LowLevelILInstructionBase
 
struct  BinaryNinja::LowLevelILInstruction
 
class  BinaryNinja::LowLevelILOperand
 
class  BinaryNinja::LowLevelILOperandList
 

Enumerations

enum  BinaryNinja::LowLevelILOperandType {
  BinaryNinja::IntegerLowLevelOperand , BinaryNinja::IndexLowLevelOperand , BinaryNinja::ExprLowLevelOperand , BinaryNinja::RegisterLowLevelOperand ,
  BinaryNinja::RegisterStackLowLevelOperand , BinaryNinja::FlagLowLevelOperand , BinaryNinja::FlagConditionLowLevelOperand , BinaryNinja::IntrinsicLowLevelOperand ,
  BinaryNinja::SemanticFlagClassLowLevelOperand , BinaryNinja::SemanticFlagGroupLowLevelOperand , BinaryNinja::SSARegisterLowLevelOperand , BinaryNinja::SSARegisterStackLowLevelOperand ,
  BinaryNinja::SSAFlagLowLevelOperand , BinaryNinja::IndexListLowLevelOperand , BinaryNinja::IndexMapLowLevelOperand , BinaryNinja::ExprListLowLevelOperand ,
  BinaryNinja::RegisterOrFlagListLowLevelOperand , BinaryNinja::SSARegisterListLowLevelOperand , BinaryNinja::SSARegisterStackListLowLevelOperand , BinaryNinja::SSAFlagListLowLevelOperand ,
  BinaryNinja::SSARegisterOrFlagListLowLevelOperand , BinaryNinja::RegisterStackAdjustmentsLowLevelOperand
}
 
enum  BinaryNinja::LowLevelILOperandUsage {
  BinaryNinja::SourceExprLowLevelOperandUsage , BinaryNinja::SourceRegisterLowLevelOperandUsage , BinaryNinja::SourceRegisterStackLowLevelOperandUsage , BinaryNinja::SourceFlagLowLevelOperandUsage ,
  BinaryNinja::SourceSSARegisterLowLevelOperandUsage , BinaryNinja::SourceSSARegisterStackLowLevelOperandUsage , BinaryNinja::SourceSSAFlagLowLevelOperandUsage , BinaryNinja::DestExprLowLevelOperandUsage ,
  BinaryNinja::DestRegisterLowLevelOperandUsage , BinaryNinja::DestRegisterStackLowLevelOperandUsage , BinaryNinja::DestFlagLowLevelOperandUsage , BinaryNinja::DestSSARegisterLowLevelOperandUsage ,
  BinaryNinja::DestSSARegisterStackLowLevelOperandUsage , BinaryNinja::DestSSAFlagLowLevelOperandUsage , BinaryNinja::SemanticFlagClassLowLevelOperandUsage , BinaryNinja::SemanticFlagGroupLowLevelOperandUsage ,
  BinaryNinja::PartialRegisterLowLevelOperandUsage , BinaryNinja::PartialSSARegisterStackSourceLowLevelOperandUsage , BinaryNinja::StackSSARegisterLowLevelOperandUsage , BinaryNinja::StackMemoryVersionLowLevelOperandUsage ,
  BinaryNinja::TopSSARegisterLowLevelOperandUsage , BinaryNinja::LeftExprLowLevelOperandUsage , BinaryNinja::RightExprLowLevelOperandUsage , BinaryNinja::CarryExprLowLevelOperandUsage ,
  BinaryNinja::ConditionExprLowLevelOperandUsage , BinaryNinja::HighRegisterLowLevelOperandUsage , BinaryNinja::HighSSARegisterLowLevelOperandUsage , BinaryNinja::LowRegisterLowLevelOperandUsage ,
  BinaryNinja::LowSSARegisterLowLevelOperandUsage , BinaryNinja::IntrinsicLowLevelOperandUsage , BinaryNinja::ConstantLowLevelOperandUsage , BinaryNinja::VectorLowLevelOperandUsage ,
  BinaryNinja::StackAdjustmentLowLevelOperandUsage , BinaryNinja::TargetLowLevelOperandUsage , BinaryNinja::TrueTargetLowLevelOperandUsage , BinaryNinja::FalseTargetLowLevelOperandUsage ,
  BinaryNinja::BitIndexLowLevelOperandUsage , BinaryNinja::SourceMemoryVersionLowLevelOperandUsage , BinaryNinja::DestMemoryVersionLowLevelOperandUsage , BinaryNinja::FlagConditionLowLevelOperandUsage ,
  BinaryNinja::OutputSSARegistersLowLevelOperandUsage , BinaryNinja::OutputMemoryVersionLowLevelOperandUsage , BinaryNinja::ParameterExprsLowLevelOperandUsage , BinaryNinja::SourceSSARegistersLowLevelOperandUsage ,
  BinaryNinja::SourceSSARegisterStacksLowLevelOperandUsage , BinaryNinja::SourceSSAFlagsLowLevelOperandUsage , BinaryNinja::OutputRegisterOrFlagListLowLevelOperandUsage , BinaryNinja::OutputSSARegisterOrFlagListLowLevelOperandUsage ,
  BinaryNinja::SourceMemoryVersionsLowLevelOperandUsage , BinaryNinja::TargetsLowLevelOperandUsage , BinaryNinja::RegisterStackAdjustmentsLowLevelOperandUsage , BinaryNinja::OffsetLowLevelOperandUsage
}
 

Class Documentation

◆ BinaryNinja::LowLevelILLabel

struct BinaryNinja::LowLevelILLabel

Public Member Functions

 LowLevelILLabel ()
 

Additional Inherited Members

- Public Attributes inherited from BNLowLevelILLabel
bool resolved
 
size_t ref
 
size_t operand
 

Constructor & Destructor Documentation

◆ LowLevelILLabel()

LowLevelILLabel::LowLevelILLabel ( )

◆ BinaryNinja::LowLevelILFunction

class BinaryNinja::LowLevelILFunction

Public Member Functions

 LowLevelILFunction (Architecture *arch, Function *func=nullptr)
 
 LowLevelILFunction (BNLowLevelILFunction *func)
 
Ref< FunctionGetFunction () const
 
Ref< ArchitectureGetArchitecture () const
 
void PrepareToCopyFunction (LowLevelILFunction *func)
 
void PrepareToCopyBlock (BasicBlock *block)
 
BNLowLevelILLabelGetLabelForSourceInstruction (size_t i)
 Get the LowLevelILLabel for a given source instruction. More...
 
uint64_t GetCurrentAddress () const
 Get the current IL address. More...
 
void SetCurrentAddress (Architecture *arch, uint64_t addr)
 
size_t GetInstructionStart (Architecture *arch, uint64_t addr)
 
void ClearIndirectBranches ()
 
void SetIndirectBranches (const std::vector< ArchAndAddr > &branches)
 
std::vector< uint32_t > GetRegisters ()
 Get a list of registers used in the LLIL function. More...
 
std::vector< uint32_t > GetRegisterStacks ()
 Get a list of used register stacks used in the LLIL function. More...
 
std::vector< uint32_t > GetFlags ()
 Get the list of flags used in this LLIL function. More...
 
std::vector< SSARegisterGetSSARegistersWithoutVersions ()
 
std::vector< SSARegisterStackGetSSARegisterStacksWithoutVersions ()
 
std::vector< SSAFlagGetSSAFlagsWithoutVersions ()
 
std::vector< SSARegisterGetSSARegisters ()
 
std::vector< SSARegisterStackGetSSARegisterStacks ()
 
std::vector< SSAFlagGetSSAFlags ()
 
ExprId AddExpr (BNLowLevelILOperation operation, size_t size, uint32_t flags, ExprId a=0, ExprId b=0, ExprId c=0, ExprId d=0)
 
ExprId AddExprWithLocation (BNLowLevelILOperation operation, uint64_t addr, uint32_t sourceOperand, size_t size, uint32_t flags, ExprId a=0, ExprId b=0, ExprId c=0, ExprId d=0)
 
ExprId AddExprWithLocation (BNLowLevelILOperation operation, const ILSourceLocation &loc, size_t size, uint32_t flags, ExprId a=0, ExprId b=0, ExprId c=0, ExprId d=0)
 
ExprId AddInstruction (ExprId expr)
 
ExprId Nop (const ILSourceLocation &loc=ILSourceLocation())
 No operation, this instruction does nothing. More...
 
ExprId SetRegister (size_t size, uint32_t reg, ExprId val, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Sets the register reg of size size to the expression value. More...
 
ExprId SetRegisterSplit (size_t size, uint32_t high, uint32_t low, ExprId val, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Uses hi and lo as a single extended register setting hi:lo to the expression value . More...
 
ExprId SetRegisterSSA (size_t size, const SSARegister &reg, ExprId val, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SetRegisterSSAPartial (size_t size, const SSARegister &fullReg, uint32_t partialReg, ExprId val, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SetRegisterSplitSSA (size_t size, const SSARegister &high, const SSARegister &low, ExprId val, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SetRegisterStackTopRelative (size_t size, uint32_t regStack, ExprId entry, ExprId val, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Sets the top-relative entry entry of size size in register stack reg_stack to the expression value. More...
 
ExprId RegisterStackPush (size_t size, uint32_t regStack, ExprId val, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Pushes the expression value of size size onto the top of the register stack reg_stack. More...
 
ExprId SetRegisterStackTopRelativeSSA (size_t size, uint32_t regStack, size_t destVersion, size_t srcVersion, ExprId entry, const SSARegister &top, ExprId val, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SetRegisterStackAbsoluteSSA (size_t size, uint32_t regStack, size_t destVersion, size_t srcVersion, uint32_t reg, ExprId val, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SetFlag (uint32_t flag, ExprId val, const ILSourceLocation &loc=ILSourceLocation())
 Sets the flag flag to the ExpressionIndex value. More...
 
ExprId SetFlagSSA (const SSAFlag &flag, ExprId val, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId Load (size_t size, ExprId addr, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Reads size bytes from the expression addr. More...
 
ExprId LoadSSA (size_t size, ExprId addr, size_t sourceMemoryVer, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId Store (size_t size, ExprId addr, ExprId val, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Writes size bytes to expression addr read from expression val. More...
 
ExprId StoreSSA (size_t size, ExprId addr, ExprId val, size_t newMemoryVer, size_t prevMemoryVer, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId Push (size_t size, ExprId val, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Writes size bytes from expression value to the stack, adjusting the stack by size . More...
 
ExprId Pop (size_t size, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Reads ``size`` bytes from the stack, adjusting the stack by ``size``. More...
 
ExprId Register (size_t size, uint32_t reg, const ILSourceLocation &loc=ILSourceLocation())
 Returns a register of size size with name reg. More...
 
ExprId RegisterSSA (size_t size, const SSARegister &reg, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterSSAPartial (size_t size, const SSARegister &fullReg, uint32_t partialReg, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterSplit (size_t size, uint32_t high, uint32_t low, const ILSourceLocation &loc=ILSourceLocation())
 Combines registers of size ``size`` with names ``hi`` and ``lo``. More...
 
ExprId RegisterSplitSSA (size_t size, const SSARegister &high, const SSARegister &low, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterStackTopRelative (size_t size, uint32_t regStack, ExprId entry, const ILSourceLocation &loc=ILSourceLocation())
 Returns a register stack entry of size size at top-relative location entry in register stack with name regStack. More...
 
ExprId RegisterStackPop (size_t size, uint32_t regStack, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Returns the top entry of size size in register stack with name reg_stack , and removes the entry from the stack. More...
 
ExprId RegisterStackFreeReg (uint32_t reg, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterStackFreeTopRelative (uint32_t regStack, ExprId entry, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterStackTopRelativeSSA (size_t size, const SSARegisterStack &regStack, ExprId entry, const SSARegister &top, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterStackAbsoluteSSA (size_t size, const SSARegisterStack &regStack, uint32_t reg, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterStackFreeTopRelativeSSA (uint32_t regStack, size_t destVersion, size_t srcVersion, ExprId entry, const SSARegister &top, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterStackFreeAbsoluteSSA (uint32_t regStack, size_t destVersion, size_t srcVersion, uint32_t reg, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId Const (size_t size, uint64_t val, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression for the constant integer value with size size. More...
 
ExprId ConstPointer (size_t size, uint64_t val, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression for the constant pointer value with size size. More...
 
ExprId ExternPointer (size_t size, uint64_t val, uint64_t offset, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression for the constant relocated pointer ``value`` with size ``size``. More...
 
ExprId FloatConstRaw (size_t size, uint64_t val, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression for the constant raw binary floating point value value with size size. More...
 
ExprId FloatConstSingle (float val, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression for the single precision floating point value value. More...
 
ExprId FloatConstDouble (double val, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression for the double precision floating point value value. More...
 
ExprId Flag (uint32_t flag, const ILSourceLocation &loc=ILSourceLocation())
 Returns a flag expression for the given flag index. More...
 
ExprId FlagSSA (const SSAFlag &flag, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId FlagBit (size_t size, uint32_t flag, size_t bitIndex, const ILSourceLocation &loc=ILSourceLocation())
 Sets the flag with index flag and size size to the constant integer value bit. More...
 
ExprId FlagBitSSA (size_t size, const SSAFlag &flag, size_t bitIndex, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId Add (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Adds expression a to expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId AddCarry (size_t size, ExprId a, ExprId b, ExprId carry, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Adds with carry expression a to expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId Sub (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Subtracts expression b from expression a potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId SubBorrow (size_t size, ExprId a, ExprId b, ExprId carry, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Subtracts with borrow expression b from expression a potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId And (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Bitwise and's expression a and expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId Or (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Bitwise or's expression a and expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId Xor (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Xor's expression a with expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId ShiftLeft (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Shifts left expression a by expression b from expression a potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId LogicalShiftRight (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Shifts logically right expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId ArithShiftRight (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Shifts arithmetic right expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId RotateLeft (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Bitwise rotates left expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId RotateLeftCarry (size_t size, ExprId a, ExprId b, ExprId carry, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Bitwise rotates left with carry expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId RotateRight (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Bitwise rotates right expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId RotateRightCarry (size_t size, ExprId a, ExprId b, ExprId carry, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Bitwise rotates right with carry expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId Mult (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Multiplies expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId MultDoublePrecUnsigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Multiplies unsigned with double precision expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId MultDoublePrecSigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Multiplies signed with double precision expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId DivUnsigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Unsigned divide expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId DivDoublePrecUnsigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Unsigned double precision divide using expression a as a single double precision register by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId DivSigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Signed divide expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId DivDoublePrecSigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Signed double precision divide using expression a as a single double precision register by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId ModUnsigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Unsigned modulus expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId ModDoublePrecUnsigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Unsigned double precision modulus using expression a as a single double precision register by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId ModSigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Signed modulus expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId ModDoublePrecSigned (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Signed double precision modulus using expression a as a single double precision register by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId Neg (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Two's complement sign negation of expression value of size size potentially setting flags. More...
 
ExprId Not (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Bitwise inverse of expression value of size size potentially setting flags. More...
 
ExprId SignExtend (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Two's complement sign-extends the expression in value to size bytes. More...
 
ExprId ZeroExtend (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Zero-extends the expression in value to size bytes. More...
 
ExprId LowPart (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Truncates value to size bytes. More...
 
ExprId Jump (ExprId dest, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression which jumps (branches) to the expression dest. More...
 
ExprId JumpTo (ExprId dest, const std::map< uint64_t, BNLowLevelILLabel * > &targets, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId Call (ExprId dest, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression which first pushes the address of the next instruction onto the stack then jumps (branches) to the expression dest. More...
 
ExprId CallStackAdjust (ExprId dest, int64_t adjust, const std::map< uint32_t, int32_t > &regStackAdjust, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression which first pushes the address of the next instruction onto the stack then jumps (branches) to the expression dest . More...
 
ExprId TailCall (ExprId dest, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression which jumps (branches) to the expression dest. More...
 
ExprId CallSSA (const std::vector< SSARegister > &output, ExprId dest, const std::vector< ExprId > &params, const SSARegister &stack, size_t newMemoryVer, size_t prevMemoryVer, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SystemCallSSA (const std::vector< SSARegister > &output, const std::vector< ExprId > &params, const SSARegister &stack, size_t newMemoryVer, size_t prevMemoryVer, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId TailCallSSA (const std::vector< SSARegister > &output, ExprId dest, const std::vector< ExprId > &params, const SSARegister &stack, size_t newMemoryVer, size_t prevMemoryVer, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SeparateParamListSSA (const std::vector< ExprId > &params, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SharedParamSlotSSA (const std::vector< ExprId > &params, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId Return (size_t dest, const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression which jumps (branches) to the expression dest . More...
 
ExprId NoReturn (const ILSourceLocation &loc=ILSourceLocation())
 Returns an expression that halts disassembly. More...
 
ExprId FlagCondition (BNLowLevelILFlagCondition cond, uint32_t semClass=0, const ILSourceLocation &loc=ILSourceLocation())
 Returns a flag_condition expression for the given LowLevelILFlagCondition. More...
 
ExprId FlagGroup (uint32_t semGroup, const ILSourceLocation &loc=ILSourceLocation())
 Returns a flag_group expression for the given semantic flag group. More...
 
ExprId CompareEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is equal to expression b. More...
 
ExprId CompareNotEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is not equal to expression b. More...
 
ExprId CompareSignedLessThan (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is signed less than expression b. More...
 
ExprId CompareUnsignedLessThan (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is unsigned less than expression b. More...
 
ExprId CompareSignedLessEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is signed less than or equal to expression b. More...
 
ExprId CompareUnsignedLessEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is unsigned less than or equal to expression b. More...
 
ExprId CompareSignedGreaterEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is signed greater than or equal to expression b. More...
 
ExprId CompareUnsignedGreaterEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is unsigned greater than or equal to expression b. More...
 
ExprId CompareSignedGreaterThan (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is signed greater than or equal to expression b. More...
 
ExprId CompareUnsignedGreaterThan (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns comparison expression of size size checking if expression a is unsigned greater than or equal to expression b. More...
 
ExprId TestBit (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId BoolToInt (size_t size, ExprId a, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId SystemCall (const ILSourceLocation &loc=ILSourceLocation())
 Returns a system call expression. More...
 
ExprId Intrinsic (const std::vector< RegisterOrFlag > &outputs, uint32_t intrinsic, const std::vector< ExprId > &params, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Returns an intrinsic expression. More...
 
ExprId IntrinsicSSA (const std::vector< SSARegisterOrFlag > &outputs, uint32_t intrinsic, const std::vector< ExprId > &params, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId Breakpoint (const ILSourceLocation &loc=ILSourceLocation())
 Returns a processor breakpoint expression. More...
 
ExprId Trap (int64_t num, const ILSourceLocation &loc=ILSourceLocation())
 Returns a processor trap (interrupt) expression of the given integer value . More...
 
ExprId Undefined (const ILSourceLocation &loc=ILSourceLocation())
 Returns the undefined expression. More...
 
ExprId Unimplemented (const ILSourceLocation &loc=ILSourceLocation())
 Returns the unimplemented expression. More...
 
ExprId UnimplementedMemoryRef (size_t size, ExprId addr, const ILSourceLocation &loc=ILSourceLocation())
 A memory reference to expression addr of size size with unimplemented operation. More...
 
ExprId RegisterPhi (const SSARegister &dest, const std::vector< SSARegister > &sources, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RegisterStackPhi (const SSARegisterStack &dest, const std::vector< SSARegisterStack > &sources, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId FlagPhi (const SSAFlag &dest, const std::vector< SSAFlag > &sources, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId MemoryPhi (size_t dest, const std::vector< size_t > &sources, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId FloatAdd (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Adds floating point expression a to expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId FloatSub (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Subtracts floating point expression b from expression a potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId FloatMult (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Multiplies floating point expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId FloatDiv (size_t size, ExprId a, ExprId b, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Divides floating point expression a by expression b potentially setting flags flags and returning an expression of size bytes. More...
 
ExprId FloatSqrt (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Returns the square root of floating point expression value of size size potentially setting flags. More...
 
ExprId FloatNeg (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Returns sign negation of floating point expression value of size size potentially setting flags. More...
 
ExprId FloatAbs (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Returns absolute value of floating point expression value of size size potentially setting flags. More...
 
ExprId FloatToInt (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Returns integer value of floating point expression value of size size potentially setting flags. More...
 
ExprId IntToFloat (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point value of integer expression value of size size potentially setting flags. More...
 
ExprId FloatConvert (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 
ExprId RoundToInt (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Rounds a floating point value to the nearest integer. More...
 
ExprId Floor (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Rounds a floating point value to an integer, towards negative infinity. More...
 
ExprId Ceil (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Rounds a floating point value to an integer, towards positive infinity. More...
 
ExprId FloatTrunc (size_t size, ExprId a, uint32_t flags=0, const ILSourceLocation &loc=ILSourceLocation())
 Rounds a floating point value to an integer towards zero. More...
 
ExprId FloatCompareEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point comparison expression of size size checking if expression a is equal to expression b. More...
 
ExprId FloatCompareNotEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point comparison expression of size size checking if expression a is not equal to expression b. More...
 
ExprId FloatCompareLessThan (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point comparison expression of size size checking if expression a is less than expression b. More...
 
ExprId FloatCompareLessEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point comparison expression of size size checking if expression a is less than or equal to expression b. More...
 
ExprId FloatCompareGreaterEqual (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point comparison expression of size size checking if expression a is greater than or equal to expression b. More...
 
ExprId FloatCompareGreaterThan (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point comparison expression of size size checking if expression a is greater than expression b. More...
 
ExprId FloatCompareOrdered (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point comparison expression of size size checking if expression a is ordered relative to expression b. More...
 
ExprId FloatCompareUnordered (size_t size, ExprId a, ExprId b, const ILSourceLocation &loc=ILSourceLocation())
 Returns floating point comparison expression of size size checking if expression a is unordered relative to expression b. More...
 
ExprId Goto (BNLowLevelILLabel &label, const ILSourceLocation &loc=ILSourceLocation())
 Returns a goto expression which jumps to the provided LowLevelILLabel. More...
 
ExprId If (ExprId operand, BNLowLevelILLabel &t, BNLowLevelILLabel &f, const ILSourceLocation &loc=ILSourceLocation())
 Returns the if expression which depending on condition operand jumps to the LowLevelILLabel t when the condition expression operand is non-zero and f`` when it's zero. More...
 
void MarkLabel (BNLowLevelILLabel &label)
 Assigns a LowLevelILLabel to the current IL address. More...
 
std::vector< uint64_t > GetOperandList (ExprId i, size_t listOperand)
 
ExprId AddLabelMap (const std::map< uint64_t, BNLowLevelILLabel * > &labels)
 
ExprId AddOperandList (const std::vector< ExprId > operands)
 
ExprId AddIndexList (const std::vector< size_t > operands)
 
ExprId AddRegisterOrFlagList (const std::vector< RegisterOrFlag > &regs)
 
ExprId AddSSARegisterList (const std::vector< SSARegister > &regs)
 
ExprId AddSSARegisterStackList (const std::vector< SSARegisterStack > &regStacks)
 
ExprId AddSSAFlagList (const std::vector< SSAFlag > &flags)
 
ExprId AddSSARegisterOrFlagList (const std::vector< SSARegisterOrFlag > &regs)
 
ExprId GetExprForRegisterOrConstant (const BNRegisterOrConstant &operand, size_t size)
 
ExprId GetNegExprForRegisterOrConstant (const BNRegisterOrConstant &operand, size_t size)
 
ExprId GetExprForFlagOrConstant (const BNRegisterOrConstant &operand)
 
ExprId GetExprForRegisterOrConstantOperation (BNLowLevelILOperation op, size_t size, BNRegisterOrConstant *operands, size_t operandCount)
 
ExprId Operand (size_t n, ExprId expr)
 
BNLowLevelILInstruction GetRawExpr (size_t i) const
 
LowLevelILInstruction operator[] (size_t i)
 
LowLevelILInstruction GetInstruction (size_t i)
 
LowLevelILInstruction GetExpr (size_t i)
 
size_t GetIndexForInstruction (size_t i) const
 
size_t GetInstructionForExpr (size_t expr) const
 
size_t GetInstructionCount () const
 
size_t GetExprCount () const
 
void UpdateInstructionOperand (size_t i, size_t operandIndex, ExprId value)
 
void ReplaceExpr (size_t expr, size_t newExpr)
 
void SetExprAttributes (size_t expr, uint32_t attributes)
 
void AddLabelForAddress (Architecture *arch, uint64_t addr)
 
BNLowLevelILLabelGetLabelForAddress (Architecture *arch, uint64_t addr)
 Get the LowLevelILLabel for a given address. More...
 
void Finalize ()
 Ends the function and computes the list of basic blocks. More...
 
void GenerateSSAForm ()
 Generate SSA form given the current LLIL. More...
 
bool GetExprText (Architecture *arch, ExprId expr, std::vector< InstructionTextToken > &tokens, DisassemblySettings *settings=nullptr)
 Get the list of InstructionTextTokens for a given expression. More...
 
bool GetInstructionText (Function *func, Architecture *arch, size_t i, std::vector< InstructionTextToken > &tokens, DisassemblySettings *settings=nullptr)
 Get the list of InstructionTextTokens for a given instruction. More...
 
uint32_t GetTemporaryRegisterCount ()
 
uint32_t GetTemporaryFlagCount ()
 
std::vector< Ref< BasicBlock > > GetBasicBlocks () const
 
Ref< BasicBlockGetBasicBlockForInstruction (size_t i) const
 
Ref< LowLevelILFunctionGetSSAForm () const
 
Ref< LowLevelILFunctionGetNonSSAForm () const
 
size_t GetSSAInstructionIndex (size_t instr) const
 
size_t GetNonSSAInstructionIndex (size_t instr) const
 
size_t GetSSAExprIndex (size_t instr) const
 
size_t GetNonSSAExprIndex (size_t instr) const
 
size_t GetSSARegisterDefinition (const SSARegister &reg) const
 
size_t GetSSAFlagDefinition (const SSAFlag &flag) const
 
size_t GetSSAMemoryDefinition (size_t version) const
 
std::set< size_t > GetSSARegisterUses (const SSARegister &reg) const
 
std::set< size_t > GetSSAFlagUses (const SSAFlag &flag) const
 
std::set< size_t > GetSSAMemoryUses (size_t version) const
 
RegisterValue GetSSARegisterValue (const SSARegister &reg)
 
RegisterValue GetSSAFlagValue (const SSAFlag &flag)
 
RegisterValue GetExprValue (size_t expr)
 
RegisterValue GetExprValue (const LowLevelILInstruction &expr)
 
PossibleValueSet GetPossibleExprValues (size_t expr, const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >())
 
PossibleValueSet GetPossibleExprValues (const LowLevelILInstruction &expr, const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >())
 
RegisterValue GetRegisterValueAtInstruction (uint32_t reg, size_t instr)
 
RegisterValue GetRegisterValueAfterInstruction (uint32_t reg, size_t instr)
 
PossibleValueSet GetPossibleRegisterValuesAtInstruction (uint32_t reg, size_t instr, const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >())
 
PossibleValueSet GetPossibleRegisterValuesAfterInstruction (uint32_t reg, size_t instr, const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >())
 
RegisterValue GetFlagValueAtInstruction (uint32_t flag, size_t instr)
 
RegisterValue GetFlagValueAfterInstruction (uint32_t flag, size_t instr)
 
PossibleValueSet GetPossibleFlagValuesAtInstruction (uint32_t flag, size_t instr, const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >())
 
PossibleValueSet GetPossibleFlagValuesAfterInstruction (uint32_t flag, size_t instr, const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >())
 
RegisterValue GetStackContentsAtInstruction (int32_t offset, size_t len, size_t instr)
 
RegisterValue GetStackContentsAfterInstruction (int32_t offset, size_t len, size_t instr)
 
PossibleValueSet GetPossibleStackContentsAtInstruction (int32_t offset, size_t len, size_t instr, const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >())
 
PossibleValueSet GetPossibleStackContentsAfterInstruction (int32_t offset, size_t len, size_t instr, const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >())
 
Ref< MediumLevelILFunctionGetMediumLevelIL () const
 
Ref< MediumLevelILFunctionGetMappedMediumLevelIL () const
 
size_t GetMediumLevelILInstructionIndex (size_t instr) const
 
size_t GetMediumLevelILExprIndex (size_t expr) const
 
std::set< size_t > GetMediumLevelILExprIndexes (size_t expr) const
 
size_t GetMappedMediumLevelILInstructionIndex (size_t instr) const
 
size_t GetMappedMediumLevelILExprIndex (size_t expr) const
 
Ref< FlowGraphCreateFunctionGraph (DisassemblySettings *settings=nullptr)
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNLowLevelILFunction, BNNewLowLevelILFunctionReference, BNFreeLowLevelILFunction >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNLowLevelILFunctionGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Static Public Member Functions

static bool IsConstantType (BNLowLevelILOperation type)
 
- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNLowLevelILFunction, BNNewLowLevelILFunctionReference, BNFreeLowLevelILFunction >
static BNLowLevelILFunctionGetObject (CoreRefCountObject *obj)
 
static BNLowLevelILFunctionGetObject (const CoreRefCountObject *obj)
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNLowLevelILFunction, BNNewLowLevelILFunctionReference, BNFreeLowLevelILFunction >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNLowLevelILFunctionm_object
 

Constructor & Destructor Documentation

◆ LowLevelILFunction() [1/2]

LowLevelILFunction::LowLevelILFunction ( Architecture arch,
Function func = nullptr 
)

◆ LowLevelILFunction() [2/2]

LowLevelILFunction::LowLevelILFunction ( BNLowLevelILFunction func)

Member Function Documentation

◆ GetFunction()

Ref< Function > LowLevelILFunction::GetFunction ( ) const

◆ GetArchitecture()

Ref< Architecture > LowLevelILFunction::GetArchitecture ( ) const

◆ PrepareToCopyFunction()

void LowLevelILFunction::PrepareToCopyFunction ( LowLevelILFunction func)

◆ PrepareToCopyBlock()

void LowLevelILFunction::PrepareToCopyBlock ( BasicBlock block)

◆ GetLabelForSourceInstruction()

BNLowLevelILLabel * LowLevelILFunction::GetLabelForSourceInstruction ( size_t  i)

Get the LowLevelILLabel for a given source instruction.

The returned pointer is to an internal object with the same lifetime as the containing LowLevelILFunction.

Parameters
iThe source instruction index
Returns
The LowLevelILLabel for the source instruction

◆ GetCurrentAddress()

uint64_t LowLevelILFunction::GetCurrentAddress ( ) const

Get the current IL address.

◆ SetCurrentAddress()

void LowLevelILFunction::SetCurrentAddress ( Architecture arch,
uint64_t  addr 
)

◆ GetInstructionStart()

size_t LowLevelILFunction::GetInstructionStart ( Architecture arch,
uint64_t  addr 
)

◆ ClearIndirectBranches()

void LowLevelILFunction::ClearIndirectBranches ( )

◆ SetIndirectBranches()

void LowLevelILFunction::SetIndirectBranches ( const std::vector< ArchAndAddr > &  branches)

◆ GetRegisters()

std::vector< uint32_t > LowLevelILFunction::GetRegisters ( )

Get a list of registers used in the LLIL function.

See also
Architecture::GetAllRegisters, Architecture::GetRegisterName, Architecture::GetRegisterInfo
Returns
The list of used registers

◆ GetRegisterStacks()

std::vector< uint32_t > LowLevelILFunction::GetRegisterStacks ( )

Get a list of used register stacks used in the LLIL function.

Returns
List of used register stacks

◆ GetFlags()

std::vector< uint32_t > LowLevelILFunction::GetFlags ( )

Get the list of flags used in this LLIL function.

See also
Architecture::GetAllFlags, Architecture::GetFlagName, Architecture::GetFlagRole
Returns
The list of used flags.

◆ GetSSARegistersWithoutVersions()

std::vector< SSARegister > LowLevelILFunction::GetSSARegistersWithoutVersions ( )

◆ GetSSARegisterStacksWithoutVersions()

std::vector< SSARegisterStack > LowLevelILFunction::GetSSARegisterStacksWithoutVersions ( )

◆ GetSSAFlagsWithoutVersions()

std::vector< SSAFlag > LowLevelILFunction::GetSSAFlagsWithoutVersions ( )

◆ GetSSARegisters()

std::vector< SSARegister > LowLevelILFunction::GetSSARegisters ( )

◆ GetSSARegisterStacks()

std::vector< SSARegisterStack > LowLevelILFunction::GetSSARegisterStacks ( )

◆ GetSSAFlags()

std::vector< SSAFlag > LowLevelILFunction::GetSSAFlags ( )

◆ AddExpr()

ExprId LowLevelILFunction::AddExpr ( BNLowLevelILOperation  operation,
size_t  size,
uint32_t  flags,
ExprId  a = 0,
ExprId  b = 0,
ExprId  c = 0,
ExprId  d = 0 
)

◆ AddExprWithLocation() [1/2]

ExprId LowLevelILFunction::AddExprWithLocation ( BNLowLevelILOperation  operation,
uint64_t  addr,
uint32_t  sourceOperand,
size_t  size,
uint32_t  flags,
ExprId  a = 0,
ExprId  b = 0,
ExprId  c = 0,
ExprId  d = 0 
)

◆ AddExprWithLocation() [2/2]

ExprId LowLevelILFunction::AddExprWithLocation ( BNLowLevelILOperation  operation,
const ILSourceLocation loc,
size_t  size,
uint32_t  flags,
ExprId  a = 0,
ExprId  b = 0,
ExprId  c = 0,
ExprId  d = 0 
)

◆ AddInstruction()

ExprId LowLevelILFunction::AddInstruction ( ExprId  expr)

◆ Nop()

ExprId LowLevelILFunction::Nop ( const ILSourceLocation loc = ILSourceLocation())

No operation, this instruction does nothing.

Parameters
locOptional IL Location this instruction was added from.
Returns

◆ SetRegister()

ExprId LowLevelILFunction::SetRegister ( size_t  size,
uint32_t  reg,
ExprId  val,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Sets the register reg of size size to the expression value.

Parameters
sizeSize of the register parameter in bytes
regThe register name
valAn expression to set the register to
flagsWhich flags are set by this operation
locOptional IL Location this instruction was added from.
Returns
The expression reg = value

◆ SetRegisterSplit()

ExprId LowLevelILFunction::SetRegisterSplit ( size_t  size,
uint32_t  high,
uint32_t  low,
ExprId  val,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Uses hi and lo as a single extended register setting hi:lo to the expression value .

Parameters
sizeSize of the register parameter in bytes
highThe high register name
lowThe low register name
valAn expression to set the split registers to
flagsWhich flags are set by this operation
locOptional IL Location this instruction was added from.
Returns
The expression hi:lo = value

◆ SetRegisterSSA()

ExprId LowLevelILFunction::SetRegisterSSA ( size_t  size,
const SSARegister reg,
ExprId  val,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SetRegisterSSAPartial()

ExprId LowLevelILFunction::SetRegisterSSAPartial ( size_t  size,
const SSARegister fullReg,
uint32_t  partialReg,
ExprId  val,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SetRegisterSplitSSA()

ExprId LowLevelILFunction::SetRegisterSplitSSA ( size_t  size,
const SSARegister high,
const SSARegister low,
ExprId  val,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SetRegisterStackTopRelative()

ExprId LowLevelILFunction::SetRegisterStackTopRelative ( size_t  size,
uint32_t  regStack,
ExprId  entry,
ExprId  val,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Sets the top-relative entry entry of size size in register stack reg_stack to the expression value.

Parameters
sizeSize of the register parameter in bytes
regStackThe register stack name
entryAn expression for which stack entry to set
valAn expression to set the entry to
flagsWhich flags are set by this operation
locOptional IL Location this instruction was added from.
Returns
The expression reg_stack[entry] = value

◆ RegisterStackPush()

ExprId LowLevelILFunction::RegisterStackPush ( size_t  size,
uint32_t  regStack,
ExprId  val,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Pushes the expression value of size size onto the top of the register stack reg_stack.

Parameters
sizeSize of the register parameter in bytes
regStackThe register stack name
valAn expression to push
flagsWhich flags are set by this operation
locOptional IL Location this instruction was added from.
Returns
The expression reg_stack.push(value)

◆ SetRegisterStackTopRelativeSSA()

ExprId LowLevelILFunction::SetRegisterStackTopRelativeSSA ( size_t  size,
uint32_t  regStack,
size_t  destVersion,
size_t  srcVersion,
ExprId  entry,
const SSARegister top,
ExprId  val,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SetRegisterStackAbsoluteSSA()

ExprId LowLevelILFunction::SetRegisterStackAbsoluteSSA ( size_t  size,
uint32_t  regStack,
size_t  destVersion,
size_t  srcVersion,
uint32_t  reg,
ExprId  val,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SetFlag()

ExprId LowLevelILFunction::SetFlag ( uint32_t  flag,
ExprId  val,
const ILSourceLocation loc = ILSourceLocation() 
)

Sets the flag flag to the ExpressionIndex value.

Parameters
flagFlag index
valAn expression to set the flag to
locOptional IL Location this instruction was added from.
Returns
The expression FLAG.flag = value

◆ SetFlagSSA()

ExprId LowLevelILFunction::SetFlagSSA ( const SSAFlag flag,
ExprId  val,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ Load()

ExprId LowLevelILFunction::Load ( size_t  size,
ExprId  addr,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Reads size bytes from the expression addr.

Parameters
sizeNumber of bytes to read
addrThe expression to read memory from
flagsFlags set by this expression
locOptional IL Location this instruction was added from.
Returns
The expression [addr].size

◆ LoadSSA()

ExprId LowLevelILFunction::LoadSSA ( size_t  size,
ExprId  addr,
size_t  sourceMemoryVer,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ Store()

ExprId LowLevelILFunction::Store ( size_t  size,
ExprId  addr,
ExprId  val,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Writes size bytes to expression addr read from expression val.

Parameters
sizeNumber of bytes to write
addrThe expression to write to
valThe expression to be written
flagsWhich flags are set by this operation
locOptional IL Location this instruction was added from.
Returns
The expression [addr].size = value

◆ StoreSSA()

ExprId LowLevelILFunction::StoreSSA ( size_t  size,
ExprId  addr,
ExprId  val,
size_t  newMemoryVer,
size_t  prevMemoryVer,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ Push()

ExprId LowLevelILFunction::Push ( size_t  size,
ExprId  val,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Writes size bytes from expression value to the stack, adjusting the stack by size .

Parameters
sizeNumber of bytes to write and adjust the stack by
valThe expression to write
flagsFlags set by this expression
locOptional IL Location this instruction was added from.
Returns
The expression push(value)

◆ Pop()

ExprId LowLevelILFunction::Pop ( size_t  size,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Reads ``size`` bytes from the stack, adjusting the stack by ``size``.

Parameters
sizeNumber of bytes to read from the stack
flagsFlags set by this expression
locOptional IL Location this instruction was added from.
Returns
The expression pop

◆ Register()

ExprId LowLevelILFunction::Register ( size_t  size,
uint32_t  reg,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns a register of size size with name reg.

Parameters
sizeThe size of the register in bytes
regThe name of the register
locOptional IL Location this instruction was added from.
Returns
A register expression for the given register

◆ RegisterSSA()

ExprId LowLevelILFunction::RegisterSSA ( size_t  size,
const SSARegister reg,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterSSAPartial()

ExprId LowLevelILFunction::RegisterSSAPartial ( size_t  size,
const SSARegister fullReg,
uint32_t  partialReg,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterSplit()

ExprId LowLevelILFunction::RegisterSplit ( size_t  size,
uint32_t  high,
uint32_t  low,
const ILSourceLocation loc = ILSourceLocation() 
)

Combines registers of size ``size`` with names ``hi`` and ``lo``.

Parameters
sizeThe size of the register in bytes
highRegister holding high part of value
lowRegister holding low part of value
locOptional IL Location this instruction was added from.
Returns
The expression hi:lo

◆ RegisterSplitSSA()

ExprId LowLevelILFunction::RegisterSplitSSA ( size_t  size,
const SSARegister high,
const SSARegister low,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterStackTopRelative()

ExprId LowLevelILFunction::RegisterStackTopRelative ( size_t  size,
uint32_t  regStack,
ExprId  entry,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns a register stack entry of size size at top-relative location entry in register stack with name regStack.

Parameters
sizeThe size of the register in bytes
regStackThe index of the register stack
entryAn expression for which stack entry to fetch
locOptional IL Location this instruction was added from.
Returns
The expression reg_stack[entry]

◆ RegisterStackPop()

ExprId LowLevelILFunction::RegisterStackPop ( size_t  size,
uint32_t  regStack,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns the top entry of size size in register stack with name reg_stack , and removes the entry from the stack.

Parameters
sizeThe size of the register in bytes
regStackThe index of the register stack
flagsAny flags set by this expression
locOptional IL Location this instruction was added from.
Returns
The expression reg_stack.pop

◆ RegisterStackFreeReg()

ExprId LowLevelILFunction::RegisterStackFreeReg ( uint32_t  reg,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterStackFreeTopRelative()

ExprId LowLevelILFunction::RegisterStackFreeTopRelative ( uint32_t  regStack,
ExprId  entry,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterStackTopRelativeSSA()

ExprId LowLevelILFunction::RegisterStackTopRelativeSSA ( size_t  size,
const SSARegisterStack regStack,
ExprId  entry,
const SSARegister top,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterStackAbsoluteSSA()

ExprId LowLevelILFunction::RegisterStackAbsoluteSSA ( size_t  size,
const SSARegisterStack regStack,
uint32_t  reg,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterStackFreeTopRelativeSSA()

ExprId LowLevelILFunction::RegisterStackFreeTopRelativeSSA ( uint32_t  regStack,
size_t  destVersion,
size_t  srcVersion,
ExprId  entry,
const SSARegister top,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterStackFreeAbsoluteSSA()

ExprId LowLevelILFunction::RegisterStackFreeAbsoluteSSA ( uint32_t  regStack,
size_t  destVersion,
size_t  srcVersion,
uint32_t  reg,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ Const()

ExprId LowLevelILFunction::Const ( size_t  size,
uint64_t  val,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression for the constant integer value with size size.

Parameters
sizeThe size of the constant in bytes
valInteger value of the constant
locOptional IL Location this instruction was added from.
Returns
A constant expression of given value and size

◆ ConstPointer()

ExprId LowLevelILFunction::ConstPointer ( size_t  size,
uint64_t  val,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression for the constant pointer value with size size.

Parameters
sizeThe size of the pointer in bytes
valAddress referenced by pointer
locOptional IL Location this instruction was added from.
Returns
A constant pointer expression of given value and size

◆ ExternPointer()

ExprId LowLevelILFunction::ExternPointer ( size_t  size,
uint64_t  val,
uint64_t  offset,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression for the constant relocated pointer ``value`` with size ``size``.

Parameters
sizeThe size of the pointer in bytes
valAddress referenced by pointer
offset
locOptional IL Location this instruction was added from.
Returns
A constant expression of given value and size

◆ FloatConstRaw()

ExprId LowLevelILFunction::FloatConstRaw ( size_t  size,
uint64_t  val,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression for the constant raw binary floating point value value with size size.

To clarify, value here is the representation of the float if its bits were instead interpreted as an integer.

A given float could be converted to an integer value like so:

union {
float floatValue;
uint32_t integerValue;
} bits;
bits.floatValue = val;
uint32_t myIntValueToPassToThisFunction = bits.integerValue;

Do note this is exactly how FloatConstSingle and FloatConstDouble perform this conversion (and thus, converting it yourself is typically redundant.)

Parameters
sizeThe size of the constant in bytes
valInteger value for the raw binary representation of the constant
locOptional IL Location this instruction was added from.
Returns
A constant expression of given value and size

◆ FloatConstSingle()

ExprId LowLevelILFunction::FloatConstSingle ( float  val,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression for the single precision floating point value value.

Parameters
valFloat value for the constant
locOptional IL Location this instruction was added from.
Returns
A constant expression of given value and size

◆ FloatConstDouble()

ExprId LowLevelILFunction::FloatConstDouble ( double  val,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression for the double precision floating point value value.

Parameters
valFloat value for the constant
locOptional IL Location this instruction was added from.
Returns
A constant expression of given value and size

◆ Flag()

ExprId LowLevelILFunction::Flag ( uint32_t  flag,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns a flag expression for the given flag index.

Parameters
flagFlag index
locOptional IL Location this expression was added from.
Returns
A flag expression for the given flag

◆ FlagSSA()

ExprId LowLevelILFunction::FlagSSA ( const SSAFlag flag,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ FlagBit()

ExprId LowLevelILFunction::FlagBit ( size_t  size,
uint32_t  flag,
size_t  bitIndex,
const ILSourceLocation loc = ILSourceLocation() 
)

Sets the flag with index flag and size size to the constant integer value bit.

Parameters
sizeThe size of the flag
flagFlag index
bitIndexBit of the flag to set
locOptional IL Location this expression was added from.
Returns
A constant expression of given value and size FLAG.reg = bit

◆ FlagBitSSA()

ExprId LowLevelILFunction::FlagBitSSA ( size_t  size,
const SSAFlag flag,
size_t  bitIndex,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ Add()

ExprId LowLevelILFunction::Add ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Adds expression a to expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsflags to set
locOptional IL Location this expression was added from.
Returns
A constant expression of given value and size FLAG.reg = bit

◆ AddCarry()

ExprId LowLevelILFunction::AddCarry ( size_t  size,
ExprId  a,
ExprId  b,
ExprId  carry,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Adds with carry expression a to expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
carryCarry flag expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression adc.<size>{<flags>}(a, b, carry)

◆ Sub()

ExprId LowLevelILFunction::Sub ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Subtracts expression b from expression a potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression sub.<size>{<flags>}(a, b)

◆ SubBorrow()

ExprId LowLevelILFunction::SubBorrow ( size_t  size,
ExprId  a,
ExprId  b,
ExprId  carry,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Subtracts with borrow expression b from expression a potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
carryCarry flag expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression sbb.<size>{<flags>}(a, b, carry)

◆ And()

ExprId LowLevelILFunction::And ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Bitwise and's expression a and expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression and.<size>{<flags>}(a, b)

◆ Or()

ExprId LowLevelILFunction::Or ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Bitwise or's expression a and expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression or.<size>{<flags>}(a, b)

◆ Xor()

ExprId LowLevelILFunction::Xor ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Xor's expression a with expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression xor.<size>{<flags>}(a, b)

◆ ShiftLeft()

ExprId LowLevelILFunction::ShiftLeft ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Shifts left expression a by expression b from expression a potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression lsl.<size>{<flags>}(a, b)

◆ LogicalShiftRight()

ExprId LowLevelILFunction::LogicalShiftRight ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Shifts logically right expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression lsr.<size>{<flags>}(a, b)

◆ ArithShiftRight()

ExprId LowLevelILFunction::ArithShiftRight ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Shifts arithmetic right expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression asr.<size>{<flags>}(a, b)

◆ RotateLeft()

ExprId LowLevelILFunction::RotateLeft ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Bitwise rotates left expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression rol.<size>{<flags>}(a, b)

◆ RotateLeftCarry()

ExprId LowLevelILFunction::RotateLeftCarry ( size_t  size,
ExprId  a,
ExprId  b,
ExprId  carry,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Bitwise rotates left with carry expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
carryCarry flag expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression rlc.<size>{<flags>}(a, b, carry)

◆ RotateRight()

ExprId LowLevelILFunction::RotateRight ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Bitwise rotates right expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression ror.<size>{<flags>}(a, b)

◆ RotateRightCarry()

ExprId LowLevelILFunction::RotateRightCarry ( size_t  size,
ExprId  a,
ExprId  b,
ExprId  carry,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Bitwise rotates right with carry expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
carryCarry flag expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression rrc.<size>{<flags>}(a, b, carry)

◆ Mult()

ExprId LowLevelILFunction::Mult ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Multiplies expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression sbc.<size>{<flags>}(a, b)

◆ MultDoublePrecUnsigned()

ExprId LowLevelILFunction::MultDoublePrecUnsigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Multiplies unsigned with double precision expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression mulu.dp.<size>{<flags>}(a, b)

◆ MultDoublePrecSigned()

ExprId LowLevelILFunction::MultDoublePrecSigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Multiplies signed with double precision expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression muls.dp.<size>{<flags>}(a, b)

◆ DivUnsigned()

ExprId LowLevelILFunction::DivUnsigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Unsigned divide expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression divu.<size>{<flags>}(a, b)

◆ DivDoublePrecUnsigned()

ExprId LowLevelILFunction::DivDoublePrecUnsigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Unsigned double precision divide using expression a as a single double precision register by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression mods.dp.<size>{<flags>}(a, b)

◆ DivSigned()

ExprId LowLevelILFunction::DivSigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Signed divide expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression divs.<size>{<flags>}(a, b)

◆ DivDoublePrecSigned()

ExprId LowLevelILFunction::DivDoublePrecSigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Signed double precision divide using expression a as a single double precision register by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression divs.dp.<size>{<flags>}(a, b)

◆ ModUnsigned()

ExprId LowLevelILFunction::ModUnsigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Unsigned modulus expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression modu.<size>{<flags>}(a, b)

◆ ModDoublePrecUnsigned()

ExprId LowLevelILFunction::ModDoublePrecUnsigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Unsigned double precision modulus using expression a as a single double precision register by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression modu.dp.<size>{<flags>}(a, b)

◆ ModSigned()

ExprId LowLevelILFunction::ModSigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Signed modulus expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression mods.<size>{<flags>}(a, b)

◆ ModDoublePrecSigned()

ExprId LowLevelILFunction::ModDoublePrecSigned ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Signed double precision modulus using expression a as a single double precision register by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression mods.dp.<size>{<flags>}(a, b)

◆ Neg()

ExprId LowLevelILFunction::Neg ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Two's complement sign negation of expression value of size size potentially setting flags.

Parameters
sizeThe size of the result in bytes
aThe expression to negate
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression neg.<size>{<flags>}(value)

◆ Not()

ExprId LowLevelILFunction::Not ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Bitwise inverse of expression value of size size potentially setting flags.

Parameters
sizeThe size of the result in bytes
aThe expression to bitwise invert
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression not.<size>{<flags>}(value)

◆ SignExtend()

ExprId LowLevelILFunction::SignExtend ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Two's complement sign-extends the expression in value to size bytes.

Parameters
sizeThe size of the result in bytes
aThe expression to sign extend
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression sx.<size>(value)

◆ ZeroExtend()

ExprId LowLevelILFunction::ZeroExtend ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Zero-extends the expression in value to size bytes.

Parameters
sizeThe size of the result in bytes
aThe expression to zero extend
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression sx.<size>(value)

◆ LowPart()

ExprId LowLevelILFunction::LowPart ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Truncates value to size bytes.

Parameters
sizeThe size of the result in bytes
aThe expression to truncate
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression zx.<size>(value)

◆ Jump()

ExprId LowLevelILFunction::Jump ( ExprId  dest,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression which jumps (branches) to the expression dest.

Parameters
destThe expression to jump to
locOptional IL Location this expression was added from.
Returns
The expression jump(dest)

◆ JumpTo()

ExprId LowLevelILFunction::JumpTo ( ExprId  dest,
const std::map< uint64_t, BNLowLevelILLabel * > &  targets,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ Call()

ExprId LowLevelILFunction::Call ( ExprId  dest,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression which first pushes the address of the next instruction onto the stack then jumps (branches) to the expression dest.

Parameters
destThe expression to call
locOptional IL Location this expression was added from.
Returns
The expression call(dest)

◆ CallStackAdjust()

ExprId LowLevelILFunction::CallStackAdjust ( ExprId  dest,
int64_t  adjust,
const std::map< uint32_t, int32_t > &  regStackAdjust,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression which first pushes the address of the next instruction onto the stack then jumps (branches) to the expression dest .

After the function exits, stack_adjust is added to the stack pointer register.

Parameters
destThe expression to call
adjustStack adjustment
regStackAdjustRegister stack adjustment
locOptional IL Location this expression was added from.
Returns
The expression call(dest), stack += stack_adjust

◆ TailCall()

ExprId LowLevelILFunction::TailCall ( ExprId  dest,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression which jumps (branches) to the expression dest.

Parameters
destThe expression to jump to
locOptional IL Location this expression was added from.
Returns
The expression tailcall(dest)

◆ CallSSA()

ExprId LowLevelILFunction::CallSSA ( const std::vector< SSARegister > &  output,
ExprId  dest,
const std::vector< ExprId > &  params,
const SSARegister stack,
size_t  newMemoryVer,
size_t  prevMemoryVer,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SystemCallSSA()

ExprId LowLevelILFunction::SystemCallSSA ( const std::vector< SSARegister > &  output,
const std::vector< ExprId > &  params,
const SSARegister stack,
size_t  newMemoryVer,
size_t  prevMemoryVer,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ TailCallSSA()

ExprId LowLevelILFunction::TailCallSSA ( const std::vector< SSARegister > &  output,
ExprId  dest,
const std::vector< ExprId > &  params,
const SSARegister stack,
size_t  newMemoryVer,
size_t  prevMemoryVer,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SeparateParamListSSA()

ExprId LowLevelILFunction::SeparateParamListSSA ( const std::vector< ExprId > &  params,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SharedParamSlotSSA()

ExprId LowLevelILFunction::SharedParamSlotSSA ( const std::vector< ExprId > &  params,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ Return()

ExprId LowLevelILFunction::Return ( size_t  dest,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an expression which jumps (branches) to the expression dest .

ret is a special alias for jump that makes the disassembler stop disassembling.

Parameters
destThe expression to jump to
locOptional IL Location this expression was added from.
Returns
The expression jump(dest)

◆ NoReturn()

ExprId LowLevelILFunction::NoReturn ( const ILSourceLocation loc = ILSourceLocation())

Returns an expression that halts disassembly.

Parameters
locOptional IL Location this expression was added from.
Returns
The expression noreturn

◆ FlagCondition()

ExprId LowLevelILFunction::FlagCondition ( BNLowLevelILFlagCondition  cond,
uint32_t  semClass = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns a flag_condition expression for the given LowLevelILFlagCondition.

Parameters
condFlag condition expression to retrieve
semClassOptional semantic flag class
locOptional IL Location this expression was added from.
Returns
A flag_condition expression

◆ FlagGroup()

ExprId LowLevelILFunction::FlagGroup ( uint32_t  semGroup,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns a flag_group expression for the given semantic flag group.

Parameters
semGroupSemantic flag group to access
locOptional IL Location this expression was added from.
Returns
A flag_group expression

◆ CompareEqual()

ExprId LowLevelILFunction::CompareEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is equal to expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareNotEqual()

ExprId LowLevelILFunction::CompareNotEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is not equal to expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareSignedLessThan()

ExprId LowLevelILFunction::CompareSignedLessThan ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is signed less than expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareUnsignedLessThan()

ExprId LowLevelILFunction::CompareUnsignedLessThan ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is unsigned less than expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareSignedLessEqual()

ExprId LowLevelILFunction::CompareSignedLessEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is signed less than or equal to expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareUnsignedLessEqual()

ExprId LowLevelILFunction::CompareUnsignedLessEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is unsigned less than or equal to expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareSignedGreaterEqual()

ExprId LowLevelILFunction::CompareSignedGreaterEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is signed greater than or equal to expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareUnsignedGreaterEqual()

ExprId LowLevelILFunction::CompareUnsignedGreaterEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is unsigned greater than or equal to expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareSignedGreaterThan()

ExprId LowLevelILFunction::CompareSignedGreaterThan ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is signed greater than or equal to expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ CompareUnsignedGreaterThan()

ExprId LowLevelILFunction::CompareUnsignedGreaterThan ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns comparison expression of size size checking if expression a is unsigned greater than or equal to expression b.

Parameters
sizeSize in bytes
aLHS of comparison
bRHS of comparison
locOptional IL Location this expression was added from.
Returns
a comparison expression.

◆ TestBit()

ExprId LowLevelILFunction::TestBit ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ BoolToInt()

ExprId LowLevelILFunction::BoolToInt ( size_t  size,
ExprId  a,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ SystemCall()

ExprId LowLevelILFunction::SystemCall ( const ILSourceLocation loc = ILSourceLocation())

Returns a system call expression.

Parameters
locOptional IL Location this expression was added from.
Returns
System call expression.

◆ Intrinsic()

ExprId LowLevelILFunction::Intrinsic ( const std::vector< RegisterOrFlag > &  outputs,
uint32_t  intrinsic,
const std::vector< ExprId > &  params,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns an intrinsic expression.

'Intrinsics' are emitted and lifted as if they were builtin functions that do not exist in the binary.

Parameters
outputsRegisters and/or flags set by this intrinsic call.
intrinsicIndex of the intrinsic. See also: Architecture::GetIntrinsicName, Architecture::GetAllIntrinsics
paramsParameter items passed to this intrinsic
flagsFlags
locOptional IL Location this expression was added from.
Returns
An intrinsic expression.

◆ IntrinsicSSA()

ExprId LowLevelILFunction::IntrinsicSSA ( const std::vector< SSARegisterOrFlag > &  outputs,
uint32_t  intrinsic,
const std::vector< ExprId > &  params,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ Breakpoint()

ExprId LowLevelILFunction::Breakpoint ( const ILSourceLocation loc = ILSourceLocation())

Returns a processor breakpoint expression.

Parameters
locOptional IL Location this expression was added from.
Returns
A breakpoint expression.

◆ Trap()

ExprId LowLevelILFunction::Trap ( int64_t  num,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns a processor trap (interrupt) expression of the given integer value .

Parameters
numtrap (interrupt) number
locOptional IL Location this expression was added from.
Returns
A trap expression.

◆ Undefined()

ExprId LowLevelILFunction::Undefined ( const ILSourceLocation loc = ILSourceLocation())

Returns the undefined expression.

This should be used for instructions which perform functions but aren't important for dataflow or partial emulation purposes.

Parameters
locOptional IL Location this expression was added from.
Returns
The Undefined expression

◆ Unimplemented()

ExprId LowLevelILFunction::Unimplemented ( const ILSourceLocation loc = ILSourceLocation())

Returns the unimplemented expression.

This should be used for instructions which aren't implemented

Parameters
locOptional IL Location this expression was added from.
Returns
The unimplemented expression

◆ UnimplementedMemoryRef()

ExprId LowLevelILFunction::UnimplementedMemoryRef ( size_t  size,
ExprId  addr,
const ILSourceLocation loc = ILSourceLocation() 
)

A memory reference to expression addr of size size with unimplemented operation.

Parameters
sizeSize in bytes of the memory reference
addrExpression to reference memory
locOptional IL Location this expression was added from.
Returns
The unimplemented memory reference expression.

◆ RegisterPhi()

ExprId LowLevelILFunction::RegisterPhi ( const SSARegister dest,
const std::vector< SSARegister > &  sources,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RegisterStackPhi()

ExprId LowLevelILFunction::RegisterStackPhi ( const SSARegisterStack dest,
const std::vector< SSARegisterStack > &  sources,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ FlagPhi()

ExprId LowLevelILFunction::FlagPhi ( const SSAFlag dest,
const std::vector< SSAFlag > &  sources,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ MemoryPhi()

ExprId LowLevelILFunction::MemoryPhi ( size_t  dest,
const std::vector< size_t > &  sources,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ FloatAdd()

ExprId LowLevelILFunction::FloatAdd ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Adds floating point expression a to expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression fadd.<size>{<flags>}(a, b)

◆ FloatSub()

ExprId LowLevelILFunction::FloatSub ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Subtracts floating point expression b from expression a potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression fsub.<size>{<flags>}(a, b)

◆ FloatMult()

ExprId LowLevelILFunction::FloatMult ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Multiplies floating point expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression fmul.<size>{<flags>}(a, b)

◆ FloatDiv()

ExprId LowLevelILFunction::FloatDiv ( size_t  size,
ExprId  a,
ExprId  b,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Divides floating point expression a by expression b potentially setting flags flags and returning an expression of size bytes.

Parameters
sizeThe size of the result in bytes
aLHS expression
bRHS expression
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression fdiv.<size>{<flags>}(a, b)

◆ FloatSqrt()

ExprId LowLevelILFunction::FloatSqrt ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns the square root of floating point expression value of size size potentially setting flags.

Parameters
sizeThe size of the result in bytes
aThe expression to calculate the square root of
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression sqrt.<size>{<flags>}(value)

◆ FloatNeg()

ExprId LowLevelILFunction::FloatNeg ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns sign negation of floating point expression value of size size potentially setting flags.

Parameters
sizeThe size of the result in bytes
aThe expression to negate
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression fneg.<size>{<flags>}(value)

◆ FloatAbs()

ExprId LowLevelILFunction::FloatAbs ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns absolute value of floating point expression value of size size potentially setting flags.

Parameters
sizeThe size of the result in bytes
aThe expression to get the absolute value of
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression fabs.<size>{<flags>}(value)

◆ FloatToInt()

ExprId LowLevelILFunction::FloatToInt ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns integer value of floating point expression value of size size potentially setting flags.

Parameters
sizeThe size of the result in bytes
aThe float expression to convert to an int
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression int.<size>{<flags>}(value)

◆ IntToFloat()

ExprId LowLevelILFunction::IntToFloat ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point value of integer expression value of size size potentially setting flags.

Parameters
sizeThe size of the result in bytes
aThe float expression to convert to a float
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression float.<size>{<flags>}(value)

◆ FloatConvert()

ExprId LowLevelILFunction::FloatConvert ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

◆ RoundToInt()

ExprId LowLevelILFunction::RoundToInt ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Rounds a floating point value to the nearest integer.

Parameters
sizeThe size of the result in bytes
aThe expression to round to the nearest integer
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression roundint.<size>{<flags>}(value)

◆ Floor()

ExprId LowLevelILFunction::Floor ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Rounds a floating point value to an integer, towards negative infinity.

Parameters
sizeThe size of the result in bytes
aThe expression to round down
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression roundint.<size>{<flags>}(value)

◆ Ceil()

ExprId LowLevelILFunction::Ceil ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Rounds a floating point value to an integer, towards positive infinity.

Parameters
sizeThe size of the result in bytes
aThe expression to round up
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression roundint.<size>{<flags>}(value)

◆ FloatTrunc()

ExprId LowLevelILFunction::FloatTrunc ( size_t  size,
ExprId  a,
uint32_t  flags = 0,
const ILSourceLocation loc = ILSourceLocation() 
)

Rounds a floating point value to an integer towards zero.

Parameters
sizeThe size of the result in bytes
aThe expression to truncate
flagsFlags to set
locOptional IL Location this expression was added from.
Returns
The expression roundint.<size>{<flags>}(value)

◆ FloatCompareEqual()

ExprId LowLevelILFunction::FloatCompareEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point comparison expression of size size checking if expression a is equal to expression b.

Parameters
sizeThe size of the operands in bytes
aLHS expression
bRHS expression
locOptional IL Location this expression was added from.
Returns
The expression a f== b

◆ FloatCompareNotEqual()

ExprId LowLevelILFunction::FloatCompareNotEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point comparison expression of size size checking if expression a is not equal to expression b.

Parameters
sizeThe size of the operands in bytes
aLHS expression
bRHS expression
locOptional IL Location this expression was added from.
Returns
The expression a f!= b

◆ FloatCompareLessThan()

ExprId LowLevelILFunction::FloatCompareLessThan ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point comparison expression of size size checking if expression a is less than expression b.

Parameters
sizeThe size of the operands in bytes
aLHS expression
bRHS expression
locOptional IL Location this expression was added from.
Returns
The expression a f< b

◆ FloatCompareLessEqual()

ExprId LowLevelILFunction::FloatCompareLessEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point comparison expression of size size checking if expression a is less than or equal to expression b.

Parameters
sizeThe size of the operands in bytes
aLHS expression
bRHS expression
locOptional IL Location this expression was added from.
Returns
The expression a f<= b

◆ FloatCompareGreaterEqual()

ExprId LowLevelILFunction::FloatCompareGreaterEqual ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point comparison expression of size size checking if expression a is greater than or equal to expression b.

Parameters
sizeThe size of the operands in bytes
aLHS expression
bRHS expression
locOptional IL Location this expression was added from.
Returns
The expression a f>= b

◆ FloatCompareGreaterThan()

ExprId LowLevelILFunction::FloatCompareGreaterThan ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point comparison expression of size size checking if expression a is greater than expression b.

Parameters
sizeThe size of the operands in bytes
aLHS expression
bRHS expression
locOptional IL Location this expression was added from.
Returns
The expression a f> b

◆ FloatCompareOrdered()

ExprId LowLevelILFunction::FloatCompareOrdered ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point comparison expression of size size checking if expression a is ordered relative to expression b.

Parameters
sizeThe size of the operands in bytes
aLHS expression
bRHS expression
locOptional IL Location this expression was added from.
Returns
The expression is_ordered(a, b)

◆ FloatCompareUnordered()

ExprId LowLevelILFunction::FloatCompareUnordered ( size_t  size,
ExprId  a,
ExprId  b,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns floating point comparison expression of size size checking if expression a is unordered relative to expression b.

Parameters
sizeThe size of the operands in bytes
aLHS expression
bRHS expression
locOptional IL Location this expression was added from.
Returns
The expression is_unordered(a, b)

◆ Goto()

ExprId LowLevelILFunction::Goto ( BNLowLevelILLabel label,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns a goto expression which jumps to the provided LowLevelILLabel.

Parameters
labelLabel to jump to
locOptional IL Location this expression was added from.
Returns
a Goto expression

◆ If()

ExprId LowLevelILFunction::If ( ExprId  operand,
BNLowLevelILLabel t,
BNLowLevelILLabel f,
const ILSourceLocation loc = ILSourceLocation() 
)

Returns the if expression which depending on condition operand jumps to the LowLevelILLabel t when the condition expression operand is non-zero and f`` when it's zero.

Parameters
operandComparison expression to evaluate.
tLabel for the true branch
fLabel for the false branch
locOptional IL Location this expression was added from.
Returns
the ExpressionIndex for the if expression

◆ MarkLabel()

void LowLevelILFunction::MarkLabel ( BNLowLevelILLabel label)

Assigns a LowLevelILLabel to the current IL address.

Parameters
labellabel to mark.

◆ GetOperandList()

vector< uint64_t > LowLevelILFunction::GetOperandList ( ExprId  i,
size_t  listOperand 
)

◆ AddLabelMap()

ExprId LowLevelILFunction::AddLabelMap ( const std::map< uint64_t, BNLowLevelILLabel * > &  labels)

◆ AddOperandList()

ExprId LowLevelILFunction::AddOperandList ( const std::vector< ExprId operands)

◆ AddIndexList()

ExprId LowLevelILFunction::AddIndexList ( const std::vector< size_t >  operands)

◆ AddRegisterOrFlagList()

ExprId LowLevelILFunction::AddRegisterOrFlagList ( const std::vector< RegisterOrFlag > &  regs)

◆ AddSSARegisterList()

ExprId LowLevelILFunction::AddSSARegisterList ( const std::vector< SSARegister > &  regs)

◆ AddSSARegisterStackList()

ExprId LowLevelILFunction::AddSSARegisterStackList ( const std::vector< SSARegisterStack > &  regStacks)

◆ AddSSAFlagList()

ExprId LowLevelILFunction::AddSSAFlagList ( const std::vector< SSAFlag > &  flags)

◆ AddSSARegisterOrFlagList()

ExprId LowLevelILFunction::AddSSARegisterOrFlagList ( const std::vector< SSARegisterOrFlag > &  regs)

◆ GetExprForRegisterOrConstant()

ExprId LowLevelILFunction::GetExprForRegisterOrConstant ( const BNRegisterOrConstant operand,
size_t  size 
)

◆ GetNegExprForRegisterOrConstant()

ExprId LowLevelILFunction::GetNegExprForRegisterOrConstant ( const BNRegisterOrConstant operand,
size_t  size 
)

◆ GetExprForFlagOrConstant()

ExprId LowLevelILFunction::GetExprForFlagOrConstant ( const BNRegisterOrConstant operand)

◆ GetExprForRegisterOrConstantOperation()

ExprId LowLevelILFunction::GetExprForRegisterOrConstantOperation ( BNLowLevelILOperation  op,
size_t  size,
BNRegisterOrConstant operands,
size_t  operandCount 
)

◆ Operand()

ExprId LowLevelILFunction::Operand ( size_t  n,
ExprId  expr 
)

◆ GetRawExpr()

BNLowLevelILInstruction LowLevelILFunction::GetRawExpr ( size_t  i) const

◆ operator[]()

LowLevelILInstruction LowLevelILFunction::operator[] ( size_t  i)

◆ GetInstruction()

LowLevelILInstruction LowLevelILFunction::GetInstruction ( size_t  i)

◆ GetExpr()

LowLevelILInstruction LowLevelILFunction::GetExpr ( size_t  i)

◆ GetIndexForInstruction()

size_t LowLevelILFunction::GetIndexForInstruction ( size_t  i) const

◆ GetInstructionForExpr()

size_t LowLevelILFunction::GetInstructionForExpr ( size_t  expr) const

◆ GetInstructionCount()

size_t LowLevelILFunction::GetInstructionCount ( ) const

◆ GetExprCount()

size_t LowLevelILFunction::GetExprCount ( ) const

◆ UpdateInstructionOperand()

void LowLevelILFunction::UpdateInstructionOperand ( size_t  i,
size_t  operandIndex,
ExprId  value 
)

◆ ReplaceExpr()

void LowLevelILFunction::ReplaceExpr ( size_t  expr,
size_t  newExpr 
)

◆ SetExprAttributes()

void LowLevelILFunction::SetExprAttributes ( size_t  expr,
uint32_t  attributes 
)

◆ AddLabelForAddress()

void LowLevelILFunction::AddLabelForAddress ( Architecture arch,
uint64_t  addr 
)

◆ GetLabelForAddress()

BNLowLevelILLabel * LowLevelILFunction::GetLabelForAddress ( Architecture arch,
uint64_t  addr 
)

Get the LowLevelILLabel for a given address.

The returned pointer is to an internal object with the same lifetime as the containing LowLevelILFunction.

Parameters
[in]archArchitecture for the address
[in]addrAddress to get the label for
Returns
The LowLevelILLabel for the address

◆ Finalize()

void LowLevelILFunction::Finalize ( )

Ends the function and computes the list of basic blocks.

◆ GenerateSSAForm()

void LowLevelILFunction::GenerateSSAForm ( )

Generate SSA form given the current LLIL.

◆ GetExprText()

bool LowLevelILFunction::GetExprText ( Architecture arch,
ExprId  expr,
std::vector< InstructionTextToken > &  tokens,
DisassemblySettings settings = nullptr 
)

Get the list of InstructionTextTokens for a given expression.

Parameters
[in]archArchitecture for the expression
[in]exprExpression to get the text for
[out]tokensOutput reference to write the instruction tokens to
[in]settingsOptional structure with settings for rendering text
Returns
True/False on success or failure

◆ GetInstructionText()

bool LowLevelILFunction::GetInstructionText ( Function func,
Architecture arch,
size_t  i,
std::vector< InstructionTextToken > &  tokens,
DisassemblySettings settings = nullptr 
)

Get the list of InstructionTextTokens for a given instruction.

Parameters
[in]funcFunction containing the instruction
[in]archArchitecture for the instruction
[in]iIndex of the instruction
[out]tokensOutput reference to write the instruction tokens to
[in]settingsOptional structure with settings for rendering text
Returns
True/False on success or failure

◆ GetTemporaryRegisterCount()

uint32_t LowLevelILFunction::GetTemporaryRegisterCount ( )

◆ GetTemporaryFlagCount()

uint32_t LowLevelILFunction::GetTemporaryFlagCount ( )

◆ GetBasicBlocks()

vector< Ref< BasicBlock > > LowLevelILFunction::GetBasicBlocks ( ) const

◆ GetBasicBlockForInstruction()

Ref< BasicBlock > LowLevelILFunction::GetBasicBlockForInstruction ( size_t  i) const

◆ GetSSAForm()

Ref< LowLevelILFunction > LowLevelILFunction::GetSSAForm ( ) const

◆ GetNonSSAForm()

Ref< LowLevelILFunction > LowLevelILFunction::GetNonSSAForm ( ) const

◆ GetSSAInstructionIndex()

size_t LowLevelILFunction::GetSSAInstructionIndex ( size_t  instr) const

◆ GetNonSSAInstructionIndex()

size_t LowLevelILFunction::GetNonSSAInstructionIndex ( size_t  instr) const

◆ GetSSAExprIndex()

size_t LowLevelILFunction::GetSSAExprIndex ( size_t  instr) const

◆ GetNonSSAExprIndex()

size_t LowLevelILFunction::GetNonSSAExprIndex ( size_t  instr) const

◆ GetSSARegisterDefinition()

size_t LowLevelILFunction::GetSSARegisterDefinition ( const SSARegister reg) const

◆ GetSSAFlagDefinition()

size_t LowLevelILFunction::GetSSAFlagDefinition ( const SSAFlag flag) const

◆ GetSSAMemoryDefinition()

size_t LowLevelILFunction::GetSSAMemoryDefinition ( size_t  version) const

◆ GetSSARegisterUses()

set< size_t > LowLevelILFunction::GetSSARegisterUses ( const SSARegister reg) const

◆ GetSSAFlagUses()

set< size_t > LowLevelILFunction::GetSSAFlagUses ( const SSAFlag flag) const

◆ GetSSAMemoryUses()

set< size_t > LowLevelILFunction::GetSSAMemoryUses ( size_t  version) const

◆ GetSSARegisterValue()

RegisterValue LowLevelILFunction::GetSSARegisterValue ( const SSARegister reg)

◆ GetSSAFlagValue()

RegisterValue LowLevelILFunction::GetSSAFlagValue ( const SSAFlag flag)

◆ GetExprValue() [1/2]

RegisterValue LowLevelILFunction::GetExprValue ( size_t  expr)

◆ GetExprValue() [2/2]

RegisterValue LowLevelILFunction::GetExprValue ( const LowLevelILInstruction expr)

◆ GetPossibleExprValues() [1/2]

PossibleValueSet BinaryNinja::LowLevelILFunction::GetPossibleExprValues ( size_t  expr,
const std::set< BNDataFlowQueryOption > &  options = std::set< BNDataFlowQueryOption >() 
)

◆ GetPossibleExprValues() [2/2]

PossibleValueSet BinaryNinja::LowLevelILFunction::GetPossibleExprValues ( const LowLevelILInstruction expr,
const std::set< BNDataFlowQueryOption > &  options = std::set< BNDataFlowQueryOption >() 
)

◆ GetRegisterValueAtInstruction()

RegisterValue LowLevelILFunction::GetRegisterValueAtInstruction ( uint32_t  reg,
size_t  instr 
)

◆ GetRegisterValueAfterInstruction()

RegisterValue LowLevelILFunction::GetRegisterValueAfterInstruction ( uint32_t  reg,
size_t  instr 
)

◆ GetPossibleRegisterValuesAtInstruction()

PossibleValueSet LowLevelILFunction::GetPossibleRegisterValuesAtInstruction ( uint32_t  reg,
size_t  instr,
const std::set< BNDataFlowQueryOption > &  options = std::set<BNDataFlowQueryOption>() 
)

◆ GetPossibleRegisterValuesAfterInstruction()

PossibleValueSet LowLevelILFunction::GetPossibleRegisterValuesAfterInstruction ( uint32_t  reg,
size_t  instr,
const std::set< BNDataFlowQueryOption > &  options = std::set<BNDataFlowQueryOption>() 
)

◆ GetFlagValueAtInstruction()

RegisterValue LowLevelILFunction::GetFlagValueAtInstruction ( uint32_t  flag,
size_t  instr 
)

◆ GetFlagValueAfterInstruction()

RegisterValue LowLevelILFunction::GetFlagValueAfterInstruction ( uint32_t  flag,
size_t  instr 
)

◆ GetPossibleFlagValuesAtInstruction()

PossibleValueSet LowLevelILFunction::GetPossibleFlagValuesAtInstruction ( uint32_t  flag,
size_t  instr,
const std::set< BNDataFlowQueryOption > &  options = std::set<BNDataFlowQueryOption>() 
)

◆ GetPossibleFlagValuesAfterInstruction()

PossibleValueSet LowLevelILFunction::GetPossibleFlagValuesAfterInstruction ( uint32_t  flag,
size_t  instr,
const std::set< BNDataFlowQueryOption > &  options = std::set<BNDataFlowQueryOption>() 
)

◆ GetStackContentsAtInstruction()

RegisterValue LowLevelILFunction::GetStackContentsAtInstruction ( int32_t  offset,
size_t  len,
size_t  instr 
)

◆ GetStackContentsAfterInstruction()

RegisterValue LowLevelILFunction::GetStackContentsAfterInstruction ( int32_t  offset,
size_t  len,
size_t  instr 
)

◆ GetPossibleStackContentsAtInstruction()

PossibleValueSet LowLevelILFunction::GetPossibleStackContentsAtInstruction ( int32_t  offset,
size_t  len,
size_t  instr,
const std::set< BNDataFlowQueryOption > &  options = std::set<BNDataFlowQueryOption>() 
)

◆ GetPossibleStackContentsAfterInstruction()

PossibleValueSet LowLevelILFunction::GetPossibleStackContentsAfterInstruction ( int32_t  offset,
size_t  len,
size_t  instr,
const std::set< BNDataFlowQueryOption > &  options = std::set<BNDataFlowQueryOption>() 
)

◆ GetMediumLevelIL()

Ref< MediumLevelILFunction > LowLevelILFunction::GetMediumLevelIL ( ) const

◆ GetMappedMediumLevelIL()

Ref< MediumLevelILFunction > LowLevelILFunction::GetMappedMediumLevelIL ( ) const

◆ GetMediumLevelILInstructionIndex()

size_t LowLevelILFunction::GetMediumLevelILInstructionIndex ( size_t  instr) const

◆ GetMediumLevelILExprIndex()

size_t LowLevelILFunction::GetMediumLevelILExprIndex ( size_t  expr) const

◆ GetMediumLevelILExprIndexes()

set< size_t > LowLevelILFunction::GetMediumLevelILExprIndexes ( size_t  expr) const

◆ GetMappedMediumLevelILInstructionIndex()

size_t LowLevelILFunction::GetMappedMediumLevelILInstructionIndex ( size_t  instr) const

◆ GetMappedMediumLevelILExprIndex()

size_t LowLevelILFunction::GetMappedMediumLevelILExprIndex ( size_t  expr) const

◆ IsConstantType()

static bool BinaryNinja::LowLevelILFunction::IsConstantType ( BNLowLevelILOperation  type)
inlinestatic

◆ CreateFunctionGraph()

Ref< FlowGraph > LowLevelILFunction::CreateFunctionGraph ( DisassemblySettings settings = nullptr)

◆ BinaryNinja::RegisterOrFlag

struct BinaryNinja::RegisterOrFlag

Public Member Functions

 RegisterOrFlag ()
 
 RegisterOrFlag (bool flag, uint32_t i)
 
 RegisterOrFlag (const RegisterOrFlag &v)
 
bool IsRegister () const
 
bool IsFlag () const
 
uint32_t GetRegister () const
 
uint32_t GetFlag () const
 
RegisterOrFlagoperator= (const RegisterOrFlag &v)
 
bool operator== (const RegisterOrFlag &v) const
 
bool operator!= (const RegisterOrFlag &v) const
 
bool operator< (const RegisterOrFlag &v) const
 
uint64_t ToIdentifier () const
 

Static Public Member Functions

static RegisterOrFlag FromIdentifier (uint64_t id)
 
static RegisterOrFlag Register (uint32_t reg)
 
static RegisterOrFlag Flag (uint32_t flag)
 

Public Attributes

bool isFlag
 
uint32_t index
 

Constructor & Destructor Documentation

◆ RegisterOrFlag() [1/3]

RegisterOrFlag::RegisterOrFlag ( )

◆ RegisterOrFlag() [2/3]

RegisterOrFlag::RegisterOrFlag ( bool  flag,
uint32_t  i 
)

◆ RegisterOrFlag() [3/3]

RegisterOrFlag::RegisterOrFlag ( const RegisterOrFlag v)

Member Function Documentation

◆ IsRegister()

bool BinaryNinja::RegisterOrFlag::IsRegister ( ) const
inline

◆ IsFlag()

bool BinaryNinja::RegisterOrFlag::IsFlag ( ) const
inline

◆ GetRegister()

uint32_t RegisterOrFlag::GetRegister ( ) const

◆ GetFlag()

uint32_t RegisterOrFlag::GetFlag ( ) const

◆ operator=()

RegisterOrFlag & RegisterOrFlag::operator= ( const RegisterOrFlag v)

◆ operator==()

bool RegisterOrFlag::operator== ( const RegisterOrFlag v) const

◆ operator!=()

bool RegisterOrFlag::operator!= ( const RegisterOrFlag v) const

◆ operator<()

bool RegisterOrFlag::operator< ( const RegisterOrFlag v) const

◆ ToIdentifier()

uint64_t RegisterOrFlag::ToIdentifier ( ) const

◆ FromIdentifier()

RegisterOrFlag RegisterOrFlag::FromIdentifier ( uint64_t  id)
static

◆ Register()

static RegisterOrFlag BinaryNinja::RegisterOrFlag::Register ( uint32_t  reg)
inlinestatic

◆ Flag()

static RegisterOrFlag BinaryNinja::RegisterOrFlag::Flag ( uint32_t  flag)
inlinestatic

Member Data Documentation

◆ isFlag

bool BinaryNinja::RegisterOrFlag::isFlag

◆ index

uint32_t BinaryNinja::RegisterOrFlag::index

◆ BinaryNinja::SSARegister

struct BinaryNinja::SSARegister

Public Member Functions

 SSARegister ()
 
 SSARegister (uint32_t r, size_t i)
 
 SSARegister (const SSARegister &v)
 
SSARegisteroperator= (const SSARegister &v)
 
bool operator== (const SSARegister &v) const
 
bool operator!= (const SSARegister &v) const
 
bool operator< (const SSARegister &v) const
 

Public Attributes

uint32_t reg
 
size_t version
 

Constructor & Destructor Documentation

◆ SSARegister() [1/3]

SSARegister::SSARegister ( )

◆ SSARegister() [2/3]

SSARegister::SSARegister ( uint32_t  r,
size_t  i 
)

◆ SSARegister() [3/3]

SSARegister::SSARegister ( const SSARegister v)

Member Function Documentation

◆ operator=()

SSARegister & SSARegister::operator= ( const SSARegister v)

◆ operator==()

bool SSARegister::operator== ( const SSARegister v) const

◆ operator!=()

bool SSARegister::operator!= ( const SSARegister v) const

◆ operator<()

bool SSARegister::operator< ( const SSARegister v) const

Member Data Documentation

◆ reg

uint32_t BinaryNinja::SSARegister::reg

◆ version

size_t BinaryNinja::SSARegister::version

◆ BinaryNinja::SSARegisterStack

struct BinaryNinja::SSARegisterStack

Public Member Functions

 SSARegisterStack ()
 
 SSARegisterStack (uint32_t r, size_t i)
 
 SSARegisterStack (const SSARegisterStack &v)
 
SSARegisterStackoperator= (const SSARegisterStack &v)
 
bool operator== (const SSARegisterStack &v) const
 
bool operator!= (const SSARegisterStack &v) const
 
bool operator< (const SSARegisterStack &v) const
 

Public Attributes

uint32_t regStack
 
size_t version
 

Constructor & Destructor Documentation

◆ SSARegisterStack() [1/3]

SSARegisterStack::SSARegisterStack ( )

◆ SSARegisterStack() [2/3]

SSARegisterStack::SSARegisterStack ( uint32_t  r,
size_t  i 
)

◆ SSARegisterStack() [3/3]

SSARegisterStack::SSARegisterStack ( const SSARegisterStack v)

Member Function Documentation

◆ operator=()

SSARegisterStack & SSARegisterStack::operator= ( const SSARegisterStack v)

◆ operator==()

bool SSARegisterStack::operator== ( const SSARegisterStack v) const

◆ operator!=()

bool SSARegisterStack::operator!= ( const SSARegisterStack v) const

◆ operator<()

bool SSARegisterStack::operator< ( const SSARegisterStack v) const

Member Data Documentation

◆ regStack

uint32_t BinaryNinja::SSARegisterStack::regStack

◆ version

size_t BinaryNinja::SSARegisterStack::version

◆ BinaryNinja::SSAFlag

struct BinaryNinja::SSAFlag

Public Member Functions

 SSAFlag ()
 
 SSAFlag (uint32_t f, size_t i)
 
 SSAFlag (const SSAFlag &v)
 
SSAFlagoperator= (const SSAFlag &v)
 
bool operator== (const SSAFlag &v) const
 
bool operator!= (const SSAFlag &v) const
 
bool operator< (const SSAFlag &v) const
 

Public Attributes

uint32_t flag
 
size_t version
 

Constructor & Destructor Documentation

◆ SSAFlag() [1/3]

SSAFlag::SSAFlag ( )

◆ SSAFlag() [2/3]

SSAFlag::SSAFlag ( uint32_t  f,
size_t  i 
)

◆ SSAFlag() [3/3]

SSAFlag::SSAFlag ( const SSAFlag v)

Member Function Documentation

◆ operator=()

SSAFlag & SSAFlag::operator= ( const SSAFlag v)

◆ operator==()

bool SSAFlag::operator== ( const SSAFlag v) const

◆ operator!=()

bool SSAFlag::operator!= ( const SSAFlag v) const

◆ operator<()

bool SSAFlag::operator< ( const SSAFlag v) const

Member Data Documentation

◆ flag

uint32_t BinaryNinja::SSAFlag::flag

◆ version

size_t BinaryNinja::SSAFlag::version

◆ BinaryNinja::SSARegisterOrFlag

struct BinaryNinja::SSARegisterOrFlag

Public Member Functions

 SSARegisterOrFlag ()
 
 SSARegisterOrFlag (const RegisterOrFlag &rf, size_t i)
 
 SSARegisterOrFlag (const SSARegister &v)
 
 SSARegisterOrFlag (const SSAFlag &v)
 
 SSARegisterOrFlag (const SSARegisterOrFlag &v)
 
SSARegisterOrFlagoperator= (const SSARegisterOrFlag &v)
 
bool operator== (const SSARegisterOrFlag &v) const
 
bool operator!= (const SSARegisterOrFlag &v) const
 
bool operator< (const SSARegisterOrFlag &v) const
 

Public Attributes

RegisterOrFlag regOrFlag
 
size_t version
 

Constructor & Destructor Documentation

◆ SSARegisterOrFlag() [1/5]

SSARegisterOrFlag::SSARegisterOrFlag ( )

◆ SSARegisterOrFlag() [2/5]

SSARegisterOrFlag::SSARegisterOrFlag ( const RegisterOrFlag rf,
size_t  i 
)

◆ SSARegisterOrFlag() [3/5]

SSARegisterOrFlag::SSARegisterOrFlag ( const SSARegister v)

◆ SSARegisterOrFlag() [4/5]

SSARegisterOrFlag::SSARegisterOrFlag ( const SSAFlag v)

◆ SSARegisterOrFlag() [5/5]

SSARegisterOrFlag::SSARegisterOrFlag ( const SSARegisterOrFlag v)

Member Function Documentation

◆ operator=()

SSARegisterOrFlag & SSARegisterOrFlag::operator= ( const SSARegisterOrFlag v)

◆ operator==()

bool SSARegisterOrFlag::operator== ( const SSARegisterOrFlag v) const

◆ operator!=()

bool SSARegisterOrFlag::operator!= ( const SSARegisterOrFlag v) const

◆ operator<()

bool SSARegisterOrFlag::operator< ( const SSARegisterOrFlag v) const

Member Data Documentation

◆ regOrFlag

RegisterOrFlag BinaryNinja::SSARegisterOrFlag::regOrFlag

◆ version

size_t BinaryNinja::SSARegisterOrFlag::version

◆ BinaryNinja::LowLevelILInstructionAccessException

class BinaryNinja::LowLevelILInstructionAccessException

Public Member Functions

 LowLevelILInstructionAccessException ()
 
- Public Member Functions inherited from BinaryNinja::ExceptionWithStackTrace
 ExceptionWithStackTrace (const std::string &message)
 
 ExceptionWithStackTrace (std::exception_ptr exc1, std::exception_ptr exc2)
 
const char * what () const noexcept override
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::ExceptionWithStackTrace
std::string m_originalMessage
 
std::string m_message
 
std::string m_stackTrace
 

Constructor & Destructor Documentation

◆ LowLevelILInstructionAccessException()

BinaryNinja::LowLevelILInstructionAccessException::LowLevelILInstructionAccessException ( )
inline

◆ BinaryNinja::LowLevelILIntegerList

class BinaryNinja::LowLevelILIntegerList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILIntegerList (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
uint64_t operator[] (size_t i) const
 
 operator std::vector< uint64_t > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILIntegerList()

LowLevelILIntegerList::LowLevelILIntegerList ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count 
)

Member Function Documentation

◆ begin()

LowLevelILIntegerList::const_iterator LowLevelILIntegerList::begin ( ) const

◆ end()

LowLevelILIntegerList::const_iterator LowLevelILIntegerList::end ( ) const

◆ size()

size_t LowLevelILIntegerList::size ( ) const

◆ operator[]()

uint64_t LowLevelILIntegerList::operator[] ( size_t  i) const

◆ operator std::vector< uint64_t >()

BinaryNinja::LowLevelILIntegerList::operator std::vector< uint64_t > ( ) const

◆ BinaryNinja::LowLevelILIndexList

class BinaryNinja::LowLevelILIndexList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILIndexList (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
size_t operator[] (size_t i) const
 
 operator std::vector< size_t > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILIndexList()

LowLevelILIndexList::LowLevelILIndexList ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count 
)

Member Function Documentation

◆ begin()

LowLevelILIndexList::const_iterator LowLevelILIndexList::begin ( ) const

◆ end()

LowLevelILIndexList::const_iterator LowLevelILIndexList::end ( ) const

◆ size()

size_t LowLevelILIndexList::size ( ) const

◆ operator[]()

size_t LowLevelILIndexList::operator[] ( size_t  i) const

◆ operator std::vector< size_t >()

BinaryNinja::LowLevelILIndexList::operator std::vector< size_t > ( ) const

◆ BinaryNinja::LowLevelILIndexMap

class BinaryNinja::LowLevelILIndexMap

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILIndexMap (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
size_t operator[] (uint64_t value) const
 
 operator std::map< uint64_t, size_t > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILIndexMap()

LowLevelILIndexMap::LowLevelILIndexMap ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count 
)

Member Function Documentation

◆ begin()

LowLevelILIndexMap::const_iterator LowLevelILIndexMap::begin ( ) const

◆ end()

LowLevelILIndexMap::const_iterator LowLevelILIndexMap::end ( ) const

◆ size()

size_t LowLevelILIndexMap::size ( ) const

◆ operator[]()

size_t LowLevelILIndexMap::operator[] ( uint64_t  value) const

◆ operator std::map< uint64_t, size_t >()

BinaryNinja::LowLevelILIndexMap::operator std::map< uint64_t, size_t > ( ) const

◆ BinaryNinja::LowLevelILInstructionList

class BinaryNinja::LowLevelILInstructionList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILInstructionList (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count, size_t instrIndex)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
const LowLevelILInstruction operator[] (size_t i) const
 
 operator std::vector< LowLevelILInstruction > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILInstructionList()

LowLevelILInstructionList::LowLevelILInstructionList ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count,
size_t  instrIndex 
)

Member Function Documentation

◆ begin()

LowLevelILInstructionList::const_iterator LowLevelILInstructionList::begin ( ) const

◆ end()

LowLevelILInstructionList::const_iterator LowLevelILInstructionList::end ( ) const

◆ size()

size_t LowLevelILInstructionList::size ( ) const

◆ operator[]()

const LowLevelILInstruction LowLevelILInstructionList::operator[] ( size_t  i) const

◆ operator std::vector< LowLevelILInstruction >()

BinaryNinja::LowLevelILInstructionList::operator std::vector< LowLevelILInstruction > ( ) const

◆ BinaryNinja::LowLevelILRegisterOrFlagList

class BinaryNinja::LowLevelILRegisterOrFlagList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILRegisterOrFlagList (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
const RegisterOrFlag operator[] (size_t i) const
 
 operator std::vector< RegisterOrFlag > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILRegisterOrFlagList()

LowLevelILRegisterOrFlagList::LowLevelILRegisterOrFlagList ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count 
)

Member Function Documentation

◆ begin()

LowLevelILRegisterOrFlagList::const_iterator LowLevelILRegisterOrFlagList::begin ( ) const

◆ end()

LowLevelILRegisterOrFlagList::const_iterator LowLevelILRegisterOrFlagList::end ( ) const

◆ size()

size_t LowLevelILRegisterOrFlagList::size ( ) const

◆ operator[]()

const RegisterOrFlag LowLevelILRegisterOrFlagList::operator[] ( size_t  i) const

◆ operator std::vector< RegisterOrFlag >()

BinaryNinja::LowLevelILRegisterOrFlagList::operator std::vector< RegisterOrFlag > ( ) const

◆ BinaryNinja::LowLevelILSSARegisterList

class BinaryNinja::LowLevelILSSARegisterList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILSSARegisterList (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
const SSARegister operator[] (size_t i) const
 
 operator std::vector< SSARegister > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILSSARegisterList()

LowLevelILSSARegisterList::LowLevelILSSARegisterList ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count 
)

Member Function Documentation

◆ begin()

LowLevelILSSARegisterList::const_iterator LowLevelILSSARegisterList::begin ( ) const

◆ end()

LowLevelILSSARegisterList::const_iterator LowLevelILSSARegisterList::end ( ) const

◆ size()

size_t LowLevelILSSARegisterList::size ( ) const

◆ operator[]()

const SSARegister LowLevelILSSARegisterList::operator[] ( size_t  i) const

◆ operator std::vector< SSARegister >()

BinaryNinja::LowLevelILSSARegisterList::operator std::vector< SSARegister > ( ) const

◆ BinaryNinja::LowLevelILSSARegisterStackList

class BinaryNinja::LowLevelILSSARegisterStackList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILSSARegisterStackList (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
const SSARegisterStack operator[] (size_t i) const
 
 operator std::vector< SSARegisterStack > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILSSARegisterStackList()

LowLevelILSSARegisterStackList::LowLevelILSSARegisterStackList ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count 
)

Member Function Documentation

◆ begin()

LowLevelILSSARegisterStackList::const_iterator LowLevelILSSARegisterStackList::begin ( ) const

◆ end()

LowLevelILSSARegisterStackList::const_iterator LowLevelILSSARegisterStackList::end ( ) const

◆ size()

size_t LowLevelILSSARegisterStackList::size ( ) const

◆ operator[]()

const SSARegisterStack LowLevelILSSARegisterStackList::operator[] ( size_t  i) const

◆ operator std::vector< SSARegisterStack >()

BinaryNinja::LowLevelILSSARegisterStackList::operator std::vector< SSARegisterStack > ( ) const

◆ BinaryNinja::LowLevelILSSAFlagList

class BinaryNinja::LowLevelILSSAFlagList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILSSAFlagList (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
const SSAFlag operator[] (size_t i) const
 
 operator std::vector< SSAFlag > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILSSAFlagList()

LowLevelILSSAFlagList::LowLevelILSSAFlagList ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count 
)

Member Function Documentation

◆ begin()

LowLevelILSSAFlagList::const_iterator LowLevelILSSAFlagList::begin ( ) const

◆ end()

LowLevelILSSAFlagList::const_iterator LowLevelILSSAFlagList::end ( ) const

◆ size()

size_t LowLevelILSSAFlagList::size ( ) const

◆ operator[]()

const SSAFlag LowLevelILSSAFlagList::operator[] ( size_t  i) const

◆ operator std::vector< SSAFlag >()

BinaryNinja::LowLevelILSSAFlagList::operator std::vector< SSAFlag > ( ) const

◆ BinaryNinja::LowLevelILSSARegisterOrFlagList

class BinaryNinja::LowLevelILSSARegisterOrFlagList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILSSARegisterOrFlagList (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t count)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
const SSARegisterOrFlag operator[] (size_t i) const
 
 operator std::vector< SSARegisterOrFlag > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILSSARegisterOrFlagList()

LowLevelILSSARegisterOrFlagList::LowLevelILSSARegisterOrFlagList ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  count 
)

Member Function Documentation

◆ begin()

LowLevelILSSARegisterOrFlagList::const_iterator LowLevelILSSARegisterOrFlagList::begin ( ) const

◆ end()

LowLevelILSSARegisterOrFlagList::const_iterator LowLevelILSSARegisterOrFlagList::end ( ) const

◆ size()

size_t LowLevelILSSARegisterOrFlagList::size ( ) const

◆ operator[]()

const SSARegisterOrFlag LowLevelILSSARegisterOrFlagList::operator[] ( size_t  i) const

◆ operator std::vector< SSARegisterOrFlag >()

BinaryNinja::LowLevelILSSARegisterOrFlagList::operator std::vector< SSARegisterOrFlag > ( ) const

◆ BinaryNinja::LowLevelILInstructionBase

struct BinaryNinja::LowLevelILInstructionBase

Public Member Functions

LowLevelILOperandList GetOperands () const
 
uint64_t GetRawOperandAsInteger (size_t operand) const
 
uint32_t GetRawOperandAsRegister (size_t operand) const
 
size_t GetRawOperandAsIndex (size_t operand) const
 
BNLowLevelILFlagCondition GetRawOperandAsFlagCondition (size_t operand) const
 
LowLevelILInstruction GetRawOperandAsExpr (size_t operand) const
 
SSARegister GetRawOperandAsSSARegister (size_t operand) const
 
SSARegisterStack GetRawOperandAsSSARegisterStack (size_t operand) const
 
SSARegisterStack GetRawOperandAsPartialSSARegisterStackSource (size_t operand) const
 
SSAFlag GetRawOperandAsSSAFlag (size_t operand) const
 
LowLevelILIndexList GetRawOperandAsIndexList (size_t operand) const
 
LowLevelILIndexMap GetRawOperandAsIndexMap (size_t operand) const
 
LowLevelILInstructionList GetRawOperandAsExprList (size_t operand) const
 
LowLevelILRegisterOrFlagList GetRawOperandAsRegisterOrFlagList (size_t operand) const
 
LowLevelILSSARegisterList GetRawOperandAsSSARegisterList (size_t operand) const
 
LowLevelILSSARegisterStackList GetRawOperandAsSSARegisterStackList (size_t operand) const
 
LowLevelILSSAFlagList GetRawOperandAsSSAFlagList (size_t operand) const
 
LowLevelILSSARegisterOrFlagList GetRawOperandAsSSARegisterOrFlagList (size_t operand) const
 
std::map< uint32_t, int32_t > GetRawOperandAsRegisterStackAdjustments (size_t operand) const
 
void UpdateRawOperand (size_t operandIndex, ExprId value)
 
void UpdateRawOperandAsSSARegisterList (size_t operandIndex, const std::vector< SSARegister > &regs)
 
void UpdateRawOperandAsSSARegisterOrFlagList (size_t operandIndex, const std::vector< SSARegisterOrFlag > &outputs)
 
RegisterValue GetValue () const
 
PossibleValueSet GetPossibleValues (const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >()) const
 
RegisterValue GetRegisterValue (uint32_t reg)
 
RegisterValue GetRegisterValueAfter (uint32_t reg)
 
PossibleValueSet GetPossibleRegisterValues (uint32_t reg)
 
PossibleValueSet GetPossibleRegisterValuesAfter (uint32_t reg)
 
RegisterValue GetFlagValue (uint32_t flag)
 
RegisterValue GetFlagValueAfter (uint32_t flag)
 
PossibleValueSet GetPossibleFlagValues (uint32_t flag)
 
PossibleValueSet GetPossibleFlagValuesAfter (uint32_t flag)
 
RegisterValue GetStackContents (int32_t offset, size_t len)
 
RegisterValue GetStackContentsAfter (int32_t offset, size_t len)
 
PossibleValueSet GetPossibleStackContents (int32_t offset, size_t len)
 
PossibleValueSet GetPossibleStackContentsAfter (int32_t offset, size_t len)
 
size_t GetSSAInstructionIndex () const
 
size_t GetNonSSAInstructionIndex () const
 
size_t GetSSAExprIndex () const
 
size_t GetNonSSAExprIndex () const
 
LowLevelILInstruction GetSSAForm () const
 
LowLevelILInstruction GetNonSSAForm () const
 
size_t GetMediumLevelILInstructionIndex () const
 
size_t GetMediumLevelILExprIndex () const
 
size_t GetMappedMediumLevelILInstructionIndex () const
 
size_t GetMappedMediumLevelILExprIndex () const
 
bool HasMediumLevelIL () const
 
bool HasMappedMediumLevelIL () const
 
MediumLevelILInstruction GetMediumLevelIL () const
 
MediumLevelILInstruction GetMappedMediumLevelIL () const
 
char * Dump () const
 
void Replace (ExprId expr)
 
void SetAttributes (uint32_t attributes)
 
void SetAttribute (BNILInstructionAttribute attribute, bool state=true)
 
void ClearAttribute (BNILInstructionAttribute attribute)
 
template<BNLowLevelILOperation N>
LowLevelILInstructionAccessor< N > & As ()
 
LowLevelILOneOperandInstructionAsOneOperand ()
 
LowLevelILTwoOperandInstructionAsTwoOperand ()
 
LowLevelILTwoOperandWithCarryInstructionAsTwoOperandWithCarry ()
 
template<BNLowLevelILOperation N>
const LowLevelILInstructionAccessor< N > & As () const
 
const LowLevelILConstantInstructionAsConstant () const
 
const LowLevelILOneOperandInstructionAsOneOperand () const
 
const LowLevelILTwoOperandInstructionAsTwoOperand () const
 
const LowLevelILTwoOperandWithCarryInstructionAsTwoOperandWithCarry () const
 

Public Attributes

Ref< LowLevelILFunctionfunction
 
size_t exprIndex
 
size_t instructionIndex
 
- Public Attributes inherited from BNLowLevelILInstruction
BNLowLevelILOperation operation
 
uint32_t attributes
 
size_t size
 
uint32_t flags
 
uint32_t sourceOperand
 
uint64_t operands [4]
 
uint64_t address
 

Static Public Attributes

static std::unordered_map< LowLevelILOperandUsage, LowLevelILOperandTypeoperandTypeForUsage
 
static std::unordered_map< BNLowLevelILOperation, std::vector< LowLevelILOperandUsage > > operationOperandUsage
 
static std::unordered_map< BNLowLevelILOperation, std::unordered_map< LowLevelILOperandUsage, size_t > > operationOperandIndex = GetOperandIndexForOperandUsages()
 

Member Function Documentation

◆ GetOperands()

LowLevelILOperandList LowLevelILInstructionBase::GetOperands ( ) const

◆ GetRawOperandAsInteger()

uint64_t LowLevelILInstructionBase::GetRawOperandAsInteger ( size_t  operand) const

◆ GetRawOperandAsRegister()

uint32_t LowLevelILInstructionBase::GetRawOperandAsRegister ( size_t  operand) const

◆ GetRawOperandAsIndex()

size_t LowLevelILInstructionBase::GetRawOperandAsIndex ( size_t  operand) const

◆ GetRawOperandAsFlagCondition()

BNLowLevelILFlagCondition LowLevelILInstructionBase::GetRawOperandAsFlagCondition ( size_t  operand) const

◆ GetRawOperandAsExpr()

LowLevelILInstruction LowLevelILInstructionBase::GetRawOperandAsExpr ( size_t  operand) const

◆ GetRawOperandAsSSARegister()

SSARegister LowLevelILInstructionBase::GetRawOperandAsSSARegister ( size_t  operand) const

◆ GetRawOperandAsSSARegisterStack()

SSARegisterStack LowLevelILInstructionBase::GetRawOperandAsSSARegisterStack ( size_t  operand) const

◆ GetRawOperandAsPartialSSARegisterStackSource()

SSARegisterStack LowLevelILInstructionBase::GetRawOperandAsPartialSSARegisterStackSource ( size_t  operand) const

◆ GetRawOperandAsSSAFlag()

SSAFlag LowLevelILInstructionBase::GetRawOperandAsSSAFlag ( size_t  operand) const

◆ GetRawOperandAsIndexList()

LowLevelILIndexList LowLevelILInstructionBase::GetRawOperandAsIndexList ( size_t  operand) const

◆ GetRawOperandAsIndexMap()

LowLevelILIndexMap LowLevelILInstructionBase::GetRawOperandAsIndexMap ( size_t  operand) const

◆ GetRawOperandAsExprList()

LowLevelILInstructionList LowLevelILInstructionBase::GetRawOperandAsExprList ( size_t  operand) const

◆ GetRawOperandAsRegisterOrFlagList()

LowLevelILRegisterOrFlagList LowLevelILInstructionBase::GetRawOperandAsRegisterOrFlagList ( size_t  operand) const

◆ GetRawOperandAsSSARegisterList()

LowLevelILSSARegisterList LowLevelILInstructionBase::GetRawOperandAsSSARegisterList ( size_t  operand) const

◆ GetRawOperandAsSSARegisterStackList()

LowLevelILSSARegisterStackList LowLevelILInstructionBase::GetRawOperandAsSSARegisterStackList ( size_t  operand) const

◆ GetRawOperandAsSSAFlagList()

LowLevelILSSAFlagList LowLevelILInstructionBase::GetRawOperandAsSSAFlagList ( size_t  operand) const

◆ GetRawOperandAsSSARegisterOrFlagList()

LowLevelILSSARegisterOrFlagList LowLevelILInstructionBase::GetRawOperandAsSSARegisterOrFlagList ( size_t  operand) const

◆ GetRawOperandAsRegisterStackAdjustments()

map< uint32_t, int32_t > LowLevelILInstructionBase::GetRawOperandAsRegisterStackAdjustments ( size_t  operand) const

◆ UpdateRawOperand()

void LowLevelILInstructionBase::UpdateRawOperand ( size_t  operandIndex,
ExprId  value 
)

◆ UpdateRawOperandAsSSARegisterList()

void LowLevelILInstructionBase::UpdateRawOperandAsSSARegisterList ( size_t  operandIndex,
const std::vector< SSARegister > &  regs 
)

◆ UpdateRawOperandAsSSARegisterOrFlagList()

void LowLevelILInstructionBase::UpdateRawOperandAsSSARegisterOrFlagList ( size_t  operandIndex,
const std::vector< SSARegisterOrFlag > &  outputs 
)

◆ GetValue()

RegisterValue LowLevelILInstructionBase::GetValue ( ) const

◆ GetPossibleValues()

PossibleValueSet LowLevelILInstructionBase::GetPossibleValues ( const std::set< BNDataFlowQueryOption > &  options = std::set <BNDataFlowQueryOption>()) const

◆ GetRegisterValue()

RegisterValue LowLevelILInstructionBase::GetRegisterValue ( uint32_t  reg)

◆ GetRegisterValueAfter()

RegisterValue LowLevelILInstructionBase::GetRegisterValueAfter ( uint32_t  reg)

◆ GetPossibleRegisterValues()

PossibleValueSet LowLevelILInstructionBase::GetPossibleRegisterValues ( uint32_t  reg)

◆ GetPossibleRegisterValuesAfter()

PossibleValueSet LowLevelILInstructionBase::GetPossibleRegisterValuesAfter ( uint32_t  reg)

◆ GetFlagValue()

RegisterValue LowLevelILInstructionBase::GetFlagValue ( uint32_t  flag)

◆ GetFlagValueAfter()

RegisterValue LowLevelILInstructionBase::GetFlagValueAfter ( uint32_t  flag)

◆ GetPossibleFlagValues()

PossibleValueSet LowLevelILInstructionBase::GetPossibleFlagValues ( uint32_t  flag)

◆ GetPossibleFlagValuesAfter()

PossibleValueSet LowLevelILInstructionBase::GetPossibleFlagValuesAfter ( uint32_t  flag)

◆ GetStackContents()

RegisterValue LowLevelILInstructionBase::GetStackContents ( int32_t  offset,
size_t  len 
)

◆ GetStackContentsAfter()

RegisterValue LowLevelILInstructionBase::GetStackContentsAfter ( int32_t  offset,
size_t  len 
)

◆ GetPossibleStackContents()

PossibleValueSet LowLevelILInstructionBase::GetPossibleStackContents ( int32_t  offset,
size_t  len 
)

◆ GetPossibleStackContentsAfter()

PossibleValueSet LowLevelILInstructionBase::GetPossibleStackContentsAfter ( int32_t  offset,
size_t  len 
)

◆ GetSSAInstructionIndex()

size_t LowLevelILInstructionBase::GetSSAInstructionIndex ( ) const

◆ GetNonSSAInstructionIndex()

size_t LowLevelILInstructionBase::GetNonSSAInstructionIndex ( ) const

◆ GetSSAExprIndex()

size_t LowLevelILInstructionBase::GetSSAExprIndex ( ) const

◆ GetNonSSAExprIndex()

size_t LowLevelILInstructionBase::GetNonSSAExprIndex ( ) const

◆ GetSSAForm()

LowLevelILInstruction LowLevelILInstructionBase::GetSSAForm ( ) const

◆ GetNonSSAForm()

LowLevelILInstruction LowLevelILInstructionBase::GetNonSSAForm ( ) const

◆ GetMediumLevelILInstructionIndex()

size_t LowLevelILInstructionBase::GetMediumLevelILInstructionIndex ( ) const

◆ GetMediumLevelILExprIndex()

size_t LowLevelILInstructionBase::GetMediumLevelILExprIndex ( ) const

◆ GetMappedMediumLevelILInstructionIndex()

size_t LowLevelILInstructionBase::GetMappedMediumLevelILInstructionIndex ( ) const

◆ GetMappedMediumLevelILExprIndex()

size_t LowLevelILInstructionBase::GetMappedMediumLevelILExprIndex ( ) const

◆ HasMediumLevelIL()

bool LowLevelILInstructionBase::HasMediumLevelIL ( ) const

◆ HasMappedMediumLevelIL()

bool LowLevelILInstructionBase::HasMappedMediumLevelIL ( ) const

◆ GetMediumLevelIL()

MediumLevelILInstruction LowLevelILInstructionBase::GetMediumLevelIL ( ) const

◆ GetMappedMediumLevelIL()

MediumLevelILInstruction LowLevelILInstructionBase::GetMappedMediumLevelIL ( ) const

◆ Dump()

char * LowLevelILInstructionBase::Dump ( ) const

◆ Replace()

void LowLevelILInstructionBase::Replace ( ExprId  expr)

◆ SetAttributes()

void LowLevelILInstructionBase::SetAttributes ( uint32_t  attributes)

◆ SetAttribute()

void LowLevelILInstructionBase::SetAttribute ( BNILInstructionAttribute  attribute,
bool  state = true 
)

◆ ClearAttribute()

void LowLevelILInstructionBase::ClearAttribute ( BNILInstructionAttribute  attribute)

◆ As() [1/2]

template<BNLowLevelILOperation N>
LowLevelILInstructionAccessor< N > & BinaryNinja::LowLevelILInstructionBase::As ( )
inline

◆ AsOneOperand() [1/2]

LowLevelILOneOperandInstruction & BinaryNinja::LowLevelILInstructionBase::AsOneOperand ( )
inline

◆ AsTwoOperand() [1/2]

LowLevelILTwoOperandInstruction & BinaryNinja::LowLevelILInstructionBase::AsTwoOperand ( )
inline

◆ AsTwoOperandWithCarry() [1/2]

LowLevelILTwoOperandWithCarryInstruction & BinaryNinja::LowLevelILInstructionBase::AsTwoOperandWithCarry ( )
inline

◆ As() [2/2]

template<BNLowLevelILOperation N>
const LowLevelILInstructionAccessor< N > & BinaryNinja::LowLevelILInstructionBase::As ( ) const
inline

◆ AsConstant()

const LowLevelILConstantInstruction & BinaryNinja::LowLevelILInstructionBase::AsConstant ( ) const
inline

◆ AsOneOperand() [2/2]

const LowLevelILOneOperandInstruction & BinaryNinja::LowLevelILInstructionBase::AsOneOperand ( ) const
inline

◆ AsTwoOperand() [2/2]

const LowLevelILTwoOperandInstruction & BinaryNinja::LowLevelILInstructionBase::AsTwoOperand ( ) const
inline

◆ AsTwoOperandWithCarry() [2/2]

const LowLevelILTwoOperandWithCarryInstruction & BinaryNinja::LowLevelILInstructionBase::AsTwoOperandWithCarry ( ) const
inline

Member Data Documentation

◆ function

Ref<LowLevelILFunction> BinaryNinja::LowLevelILInstructionBase::function

◆ exprIndex

size_t BinaryNinja::LowLevelILInstructionBase::exprIndex

◆ instructionIndex

size_t BinaryNinja::LowLevelILInstructionBase::instructionIndex

◆ operandTypeForUsage

unordered_map< LowLevelILOperandUsage, LowLevelILOperandType > LowLevelILInstructionBase::operandTypeForUsage
static

◆ operationOperandUsage

unordered_map< BNLowLevelILOperation, vector< LowLevelILOperandUsage > > LowLevelILInstructionBase::operationOperandUsage
static

◆ operationOperandIndex

unordered_map< BNLowLevelILOperation, unordered_map< LowLevelILOperandUsage, size_t > > LowLevelILInstructionBase::operationOperandIndex = GetOperandIndexForOperandUsages()
static

◆ BinaryNinja::LowLevelILInstruction

struct BinaryNinja::LowLevelILInstruction

Public Member Functions

 LowLevelILInstruction ()
 
 LowLevelILInstruction (LowLevelILFunction *func, const BNLowLevelILInstruction &instr, size_t expr, size_t instrIdx)
 
 LowLevelILInstruction (const LowLevelILInstructionBase &instr)
 
void VisitExprs (const std::function< bool(const LowLevelILInstruction &expr)> &func) const
 
ExprId CopyTo (LowLevelILFunction *dest) const
 
ExprId CopyTo (LowLevelILFunction *dest, const std::function< ExprId(const LowLevelILInstruction &subExpr)> &subExprHandler) const
 
template<BNLowLevelILOperation N>
LowLevelILInstruction GetSourceExpr () const
 
template<BNLowLevelILOperation N>
uint32_t GetSourceRegister () const
 
template<BNLowLevelILOperation N>
uint32_t GetSourceRegisterStack () const
 
template<BNLowLevelILOperation N>
uint32_t GetSourceFlag () const
 
template<BNLowLevelILOperation N>
SSARegister GetSourceSSARegister () const
 
template<BNLowLevelILOperation N>
SSARegisterStack GetSourceSSARegisterStack () const
 
template<BNLowLevelILOperation N>
SSAFlag GetSourceSSAFlag () const
 
template<BNLowLevelILOperation N>
LowLevelILInstruction GetDestExpr () const
 
template<BNLowLevelILOperation N>
uint32_t GetDestRegister () const
 
template<BNLowLevelILOperation N>
uint32_t GetDestRegisterStack () const
 
template<BNLowLevelILOperation N>
uint32_t GetDestFlag () const
 
template<BNLowLevelILOperation N>
SSARegister GetDestSSARegister () const
 
template<BNLowLevelILOperation N>
SSARegisterStack GetDestSSARegisterStack () const
 
template<BNLowLevelILOperation N>
SSAFlag GetDestSSAFlag () const
 
template<BNLowLevelILOperation N>
uint32_t GetSemanticFlagClass () const
 
template<BNLowLevelILOperation N>
uint32_t GetSemanticFlagGroup () const
 
template<BNLowLevelILOperation N>
uint32_t GetPartialRegister () const
 
template<BNLowLevelILOperation N>
SSARegister GetStackSSARegister () const
 
template<BNLowLevelILOperation N>
SSARegister GetTopSSARegister () const
 
template<BNLowLevelILOperation N>
LowLevelILInstruction GetLeftExpr () const
 
template<BNLowLevelILOperation N>
LowLevelILInstruction GetRightExpr () const
 
template<BNLowLevelILOperation N>
LowLevelILInstruction GetCarryExpr () const
 
template<BNLowLevelILOperation N>
LowLevelILInstruction GetConditionExpr () const
 
template<BNLowLevelILOperation N>
uint32_t GetHighRegister () const
 
template<BNLowLevelILOperation N>
SSARegister GetHighSSARegister () const
 
template<BNLowLevelILOperation N>
uint32_t GetLowRegister () const
 
template<BNLowLevelILOperation N>
SSARegister GetLowSSARegister () const
 
template<BNLowLevelILOperation N>
uint32_t GetIntrinsic () const
 
template<BNLowLevelILOperation N>
int64_t GetConstant () const
 
template<BNLowLevelILOperation N>
uint64_t GetOffset () const
 
template<BNLowLevelILOperation N>
int64_t GetVector () const
 
template<BNLowLevelILOperation N>
int64_t GetStackAdjustment () const
 
template<BNLowLevelILOperation N>
size_t GetTarget () const
 
template<BNLowLevelILOperation N>
size_t GetTrueTarget () const
 
template<BNLowLevelILOperation N>
size_t GetFalseTarget () const
 
template<BNLowLevelILOperation N>
size_t GetBitIndex () const
 
template<BNLowLevelILOperation N>
size_t GetSourceMemoryVersion () const
 
template<BNLowLevelILOperation N>
size_t GetDestMemoryVersion () const
 
template<BNLowLevelILOperation N>
BNLowLevelILFlagCondition GetFlagCondition () const
 
template<BNLowLevelILOperation N>
LowLevelILSSARegisterList GetOutputSSARegisters () const
 
template<BNLowLevelILOperation N>
LowLevelILInstructionList GetParameterExprs () const
 
template<BNLowLevelILOperation N>
LowLevelILSSARegisterList GetSourceSSARegisters () const
 
template<BNLowLevelILOperation N>
LowLevelILSSARegisterStackList GetSourceSSARegisterStacks () const
 
template<BNLowLevelILOperation N>
LowLevelILSSAFlagList GetSourceSSAFlags () const
 
template<BNLowLevelILOperation N>
LowLevelILRegisterOrFlagList GetOutputRegisterOrFlagList () const
 
template<BNLowLevelILOperation N>
LowLevelILSSARegisterOrFlagList GetOutputSSARegisterOrFlagList () const
 
template<BNLowLevelILOperation N>
LowLevelILIndexList GetSourceMemoryVersions () const
 
template<BNLowLevelILOperation N>
LowLevelILIndexMap GetTargets () const
 
template<BNLowLevelILOperation N>
std::map< uint32_t, int32_t > GetRegisterStackAdjustments () const
 
template<BNLowLevelILOperation N>
void SetDestSSAVersion (size_t version)
 
template<BNLowLevelILOperation N>
void SetSourceSSAVersion (size_t version)
 
template<BNLowLevelILOperation N>
void SetHighSSAVersion (size_t version)
 
template<BNLowLevelILOperation N>
void SetLowSSAVersion (size_t version)
 
template<BNLowLevelILOperation N>
void SetStackSSAVersion (size_t version)
 
template<BNLowLevelILOperation N>
void SetTopSSAVersion (size_t version)
 
template<BNLowLevelILOperation N>
void SetDestMemoryVersion (size_t version)
 
template<BNLowLevelILOperation N>
void SetSourceMemoryVersion (size_t version)
 
template<BNLowLevelILOperation N>
void SetOutputSSARegisters (const std::vector< SSARegister > &regs)
 
template<BNLowLevelILOperation N>
void SetOutputSSARegisterOrFlagList (const std::vector< SSARegisterOrFlag > &outputs)
 
bool GetOperandIndexForUsage (LowLevelILOperandUsage usage, size_t &operandIndex) const
 
LowLevelILInstruction GetSourceExpr () const
 
uint32_t GetSourceRegister () const
 
uint32_t GetSourceRegisterStack () const
 
uint32_t GetSourceFlag () const
 
SSARegister GetSourceSSARegister () const
 
SSARegisterStack GetSourceSSARegisterStack () const
 
SSAFlag GetSourceSSAFlag () const
 
LowLevelILInstruction GetDestExpr () const
 
uint32_t GetDestRegister () const
 
uint32_t GetDestRegisterStack () const
 
uint32_t GetDestFlag () const
 
SSARegister GetDestSSARegister () const
 
SSARegisterStack GetDestSSARegisterStack () const
 
SSAFlag GetDestSSAFlag () const
 
uint32_t GetSemanticFlagClass () const
 
uint32_t GetSemanticFlagGroup () const
 
uint32_t GetPartialRegister () const
 
SSARegister GetStackSSARegister () const
 
SSARegister GetTopSSARegister () const
 
LowLevelILInstruction GetLeftExpr () const
 
LowLevelILInstruction GetRightExpr () const
 
LowLevelILInstruction GetCarryExpr () const
 
LowLevelILInstruction GetConditionExpr () const
 
uint32_t GetHighRegister () const
 
SSARegister GetHighSSARegister () const
 
uint32_t GetLowRegister () const
 
SSARegister GetLowSSARegister () const
 
uint32_t GetIntrinsic () const
 
int64_t GetConstant () const
 
uint64_t GetOffset () const
 
int64_t GetVector () const
 
int64_t GetStackAdjustment () const
 
size_t GetTarget () const
 
size_t GetTrueTarget () const
 
size_t GetFalseTarget () const
 
size_t GetBitIndex () const
 
size_t GetSourceMemoryVersion () const
 
size_t GetDestMemoryVersion () const
 
BNLowLevelILFlagCondition GetFlagCondition () const
 
LowLevelILSSARegisterList GetOutputSSARegisters () const
 
LowLevelILInstructionList GetParameterExprs () const
 
LowLevelILSSARegisterList GetSourceSSARegisters () const
 
LowLevelILSSARegisterStackList GetSourceSSARegisterStacks () const
 
LowLevelILSSAFlagList GetSourceSSAFlags () const
 
LowLevelILRegisterOrFlagList GetOutputRegisterOrFlagList () const
 
LowLevelILSSARegisterOrFlagList GetOutputSSARegisterOrFlagList () const
 
LowLevelILIndexList GetSourceMemoryVersions () const
 
LowLevelILIndexMap GetTargets () const
 
std::map< uint32_t, int32_t > GetRegisterStackAdjustments () const
 
- Public Member Functions inherited from BinaryNinja::LowLevelILInstructionBase
LowLevelILOperandList GetOperands () const
 
uint64_t GetRawOperandAsInteger (size_t operand) const
 
uint32_t GetRawOperandAsRegister (size_t operand) const
 
size_t GetRawOperandAsIndex (size_t operand) const
 
BNLowLevelILFlagCondition GetRawOperandAsFlagCondition (size_t operand) const
 
LowLevelILInstruction GetRawOperandAsExpr (size_t operand) const
 
SSARegister GetRawOperandAsSSARegister (size_t operand) const
 
SSARegisterStack GetRawOperandAsSSARegisterStack (size_t operand) const
 
SSARegisterStack GetRawOperandAsPartialSSARegisterStackSource (size_t operand) const
 
SSAFlag GetRawOperandAsSSAFlag (size_t operand) const
 
LowLevelILIndexList GetRawOperandAsIndexList (size_t operand) const
 
LowLevelILIndexMap GetRawOperandAsIndexMap (size_t operand) const
 
LowLevelILInstructionList GetRawOperandAsExprList (size_t operand) const
 
LowLevelILRegisterOrFlagList GetRawOperandAsRegisterOrFlagList (size_t operand) const
 
LowLevelILSSARegisterList GetRawOperandAsSSARegisterList (size_t operand) const
 
LowLevelILSSARegisterStackList GetRawOperandAsSSARegisterStackList (size_t operand) const
 
LowLevelILSSAFlagList GetRawOperandAsSSAFlagList (size_t operand) const
 
LowLevelILSSARegisterOrFlagList GetRawOperandAsSSARegisterOrFlagList (size_t operand) const
 
std::map< uint32_t, int32_t > GetRawOperandAsRegisterStackAdjustments (size_t operand) const
 
void UpdateRawOperand (size_t operandIndex, ExprId value)
 
void UpdateRawOperandAsSSARegisterList (size_t operandIndex, const std::vector< SSARegister > &regs)
 
void UpdateRawOperandAsSSARegisterOrFlagList (size_t operandIndex, const std::vector< SSARegisterOrFlag > &outputs)
 
RegisterValue GetValue () const
 
PossibleValueSet GetPossibleValues (const std::set< BNDataFlowQueryOption > &options=std::set< BNDataFlowQueryOption >()) const
 
RegisterValue GetRegisterValue (uint32_t reg)
 
RegisterValue GetRegisterValueAfter (uint32_t reg)
 
PossibleValueSet GetPossibleRegisterValues (uint32_t reg)
 
PossibleValueSet GetPossibleRegisterValuesAfter (uint32_t reg)
 
RegisterValue GetFlagValue (uint32_t flag)
 
RegisterValue GetFlagValueAfter (uint32_t flag)
 
PossibleValueSet GetPossibleFlagValues (uint32_t flag)
 
PossibleValueSet GetPossibleFlagValuesAfter (uint32_t flag)
 
RegisterValue GetStackContents (int32_t offset, size_t len)
 
RegisterValue GetStackContentsAfter (int32_t offset, size_t len)
 
PossibleValueSet GetPossibleStackContents (int32_t offset, size_t len)
 
PossibleValueSet GetPossibleStackContentsAfter (int32_t offset, size_t len)
 
size_t GetSSAInstructionIndex () const
 
size_t GetNonSSAInstructionIndex () const
 
size_t GetSSAExprIndex () const
 
size_t GetNonSSAExprIndex () const
 
LowLevelILInstruction GetSSAForm () const
 
LowLevelILInstruction GetNonSSAForm () const
 
size_t GetMediumLevelILInstructionIndex () const
 
size_t GetMediumLevelILExprIndex () const
 
size_t GetMappedMediumLevelILInstructionIndex () const
 
size_t GetMappedMediumLevelILExprIndex () const
 
bool HasMediumLevelIL () const
 
bool HasMappedMediumLevelIL () const
 
MediumLevelILInstruction GetMediumLevelIL () const
 
MediumLevelILInstruction GetMappedMediumLevelIL () const
 
char * Dump () const
 
void Replace (ExprId expr)
 
void SetAttributes (uint32_t attributes)
 
void SetAttribute (BNILInstructionAttribute attribute, bool state=true)
 
void ClearAttribute (BNILInstructionAttribute attribute)
 
template<BNLowLevelILOperation N>
LowLevelILInstructionAccessor< N > & As ()
 
LowLevelILOneOperandInstructionAsOneOperand ()
 
LowLevelILTwoOperandInstructionAsTwoOperand ()
 
LowLevelILTwoOperandWithCarryInstructionAsTwoOperandWithCarry ()
 
template<BNLowLevelILOperation N>
const LowLevelILInstructionAccessor< N > & As () const
 
const LowLevelILConstantInstructionAsConstant () const
 
const LowLevelILOneOperandInstructionAsOneOperand () const
 
const LowLevelILTwoOperandInstructionAsTwoOperand () const
 
const LowLevelILTwoOperandWithCarryInstructionAsTwoOperandWithCarry () const
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::LowLevelILInstructionBase
Ref< LowLevelILFunctionfunction
 
size_t exprIndex
 
size_t instructionIndex
 
- Public Attributes inherited from BNLowLevelILInstruction
BNLowLevelILOperation operation
 
uint32_t attributes
 
size_t size
 
uint32_t flags
 
uint32_t sourceOperand
 
uint64_t operands [4]
 
uint64_t address
 
- Static Public Attributes inherited from BinaryNinja::LowLevelILInstructionBase
static std::unordered_map< LowLevelILOperandUsage, LowLevelILOperandTypeoperandTypeForUsage
 
static std::unordered_map< BNLowLevelILOperation, std::vector< LowLevelILOperandUsage > > operationOperandUsage
 
static std::unordered_map< BNLowLevelILOperation, std::unordered_map< LowLevelILOperandUsage, size_t > > operationOperandIndex = GetOperandIndexForOperandUsages()
 

Constructor & Destructor Documentation

◆ LowLevelILInstruction() [1/3]

LowLevelILInstruction::LowLevelILInstruction ( )

◆ LowLevelILInstruction() [2/3]

LowLevelILInstruction::LowLevelILInstruction ( LowLevelILFunction func,
const BNLowLevelILInstruction instr,
size_t  expr,
size_t  instrIdx 
)

◆ LowLevelILInstruction() [3/3]

LowLevelILInstruction::LowLevelILInstruction ( const LowLevelILInstructionBase instr)

Member Function Documentation

◆ VisitExprs()

void LowLevelILInstruction::VisitExprs ( const std::function< bool(const LowLevelILInstruction &expr)> &  func) const

◆ CopyTo() [1/2]

ExprId LowLevelILInstruction::CopyTo ( LowLevelILFunction dest) const

◆ CopyTo() [2/2]

ExprId LowLevelILInstruction::CopyTo ( LowLevelILFunction dest,
const std::function< ExprId(const LowLevelILInstruction &subExpr)> &  subExprHandler 
) const

◆ GetSourceExpr() [1/2]

template<BNLowLevelILOperation N>
LowLevelILInstruction BinaryNinja::LowLevelILInstruction::GetSourceExpr ( ) const
inline

◆ GetSourceRegister() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetSourceRegister ( ) const
inline

◆ GetSourceRegisterStack() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetSourceRegisterStack ( ) const
inline

◆ GetSourceFlag() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetSourceFlag ( ) const
inline

◆ GetSourceSSARegister() [1/2]

template<BNLowLevelILOperation N>
SSARegister BinaryNinja::LowLevelILInstruction::GetSourceSSARegister ( ) const
inline

◆ GetSourceSSARegisterStack() [1/2]

template<BNLowLevelILOperation N>
SSARegisterStack BinaryNinja::LowLevelILInstruction::GetSourceSSARegisterStack ( ) const
inline

◆ GetSourceSSAFlag() [1/2]

template<BNLowLevelILOperation N>
SSAFlag BinaryNinja::LowLevelILInstruction::GetSourceSSAFlag ( ) const
inline

◆ GetDestExpr() [1/2]

template<BNLowLevelILOperation N>
LowLevelILInstruction BinaryNinja::LowLevelILInstruction::GetDestExpr ( ) const
inline

◆ GetDestRegister() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetDestRegister ( ) const
inline

◆ GetDestRegisterStack() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetDestRegisterStack ( ) const
inline

◆ GetDestFlag() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetDestFlag ( ) const
inline

◆ GetDestSSARegister() [1/2]

template<BNLowLevelILOperation N>
SSARegister BinaryNinja::LowLevelILInstruction::GetDestSSARegister ( ) const
inline

◆ GetDestSSARegisterStack() [1/2]

template<BNLowLevelILOperation N>
SSARegisterStack BinaryNinja::LowLevelILInstruction::GetDestSSARegisterStack ( ) const
inline

◆ GetDestSSAFlag() [1/2]

template<BNLowLevelILOperation N>
SSAFlag BinaryNinja::LowLevelILInstruction::GetDestSSAFlag ( ) const
inline

◆ GetSemanticFlagClass() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetSemanticFlagClass ( ) const
inline

◆ GetSemanticFlagGroup() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetSemanticFlagGroup ( ) const
inline

◆ GetPartialRegister() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetPartialRegister ( ) const
inline

◆ GetStackSSARegister() [1/2]

template<BNLowLevelILOperation N>
SSARegister BinaryNinja::LowLevelILInstruction::GetStackSSARegister ( ) const
inline

◆ GetTopSSARegister() [1/2]

template<BNLowLevelILOperation N>
SSARegister BinaryNinja::LowLevelILInstruction::GetTopSSARegister ( ) const
inline

◆ GetLeftExpr() [1/2]

template<BNLowLevelILOperation N>
LowLevelILInstruction BinaryNinja::LowLevelILInstruction::GetLeftExpr ( ) const
inline

◆ GetRightExpr() [1/2]

template<BNLowLevelILOperation N>
LowLevelILInstruction BinaryNinja::LowLevelILInstruction::GetRightExpr ( ) const
inline

◆ GetCarryExpr() [1/2]

template<BNLowLevelILOperation N>
LowLevelILInstruction BinaryNinja::LowLevelILInstruction::GetCarryExpr ( ) const
inline

◆ GetConditionExpr() [1/2]

template<BNLowLevelILOperation N>
LowLevelILInstruction BinaryNinja::LowLevelILInstruction::GetConditionExpr ( ) const
inline

◆ GetHighRegister() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetHighRegister ( ) const
inline

◆ GetHighSSARegister() [1/2]

template<BNLowLevelILOperation N>
SSARegister BinaryNinja::LowLevelILInstruction::GetHighSSARegister ( ) const
inline

◆ GetLowRegister() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetLowRegister ( ) const
inline

◆ GetLowSSARegister() [1/2]

template<BNLowLevelILOperation N>
SSARegister BinaryNinja::LowLevelILInstruction::GetLowSSARegister ( ) const
inline

◆ GetIntrinsic() [1/2]

template<BNLowLevelILOperation N>
uint32_t BinaryNinja::LowLevelILInstruction::GetIntrinsic ( ) const
inline

◆ GetConstant() [1/2]

template<BNLowLevelILOperation N>
int64_t BinaryNinja::LowLevelILInstruction::GetConstant ( ) const
inline

◆ GetOffset() [1/2]

template<BNLowLevelILOperation N>
uint64_t BinaryNinja::LowLevelILInstruction::GetOffset ( ) const
inline

◆ GetVector() [1/2]

template<BNLowLevelILOperation N>
int64_t BinaryNinja::LowLevelILInstruction::GetVector ( ) const
inline

◆ GetStackAdjustment() [1/2]

template<BNLowLevelILOperation N>
int64_t BinaryNinja::LowLevelILInstruction::GetStackAdjustment ( ) const
inline

◆ GetTarget() [1/2]

template<BNLowLevelILOperation N>
size_t BinaryNinja::LowLevelILInstruction::GetTarget ( ) const
inline

◆ GetTrueTarget() [1/2]

template<BNLowLevelILOperation N>
size_t BinaryNinja::LowLevelILInstruction::GetTrueTarget ( ) const
inline

◆ GetFalseTarget() [1/2]

template<BNLowLevelILOperation N>
size_t BinaryNinja::LowLevelILInstruction::GetFalseTarget ( ) const
inline

◆ GetBitIndex() [1/2]

template<BNLowLevelILOperation N>
size_t BinaryNinja::LowLevelILInstruction::GetBitIndex ( ) const
inline

◆ GetSourceMemoryVersion() [1/2]

template<BNLowLevelILOperation N>
size_t BinaryNinja::LowLevelILInstruction::GetSourceMemoryVersion ( ) const
inline

◆ GetDestMemoryVersion() [1/2]

template<BNLowLevelILOperation N>
size_t BinaryNinja::LowLevelILInstruction::GetDestMemoryVersion ( ) const
inline

◆ GetFlagCondition() [1/2]

template<BNLowLevelILOperation N>
BNLowLevelILFlagCondition BinaryNinja::LowLevelILInstruction::GetFlagCondition ( ) const
inline

◆ GetOutputSSARegisters() [1/2]

template<BNLowLevelILOperation N>
LowLevelILSSARegisterList BinaryNinja::LowLevelILInstruction::GetOutputSSARegisters ( ) const
inline

◆ GetParameterExprs() [1/2]

template<BNLowLevelILOperation N>
LowLevelILInstructionList BinaryNinja::LowLevelILInstruction::GetParameterExprs ( ) const
inline

◆ GetSourceSSARegisters() [1/2]

template<BNLowLevelILOperation N>
LowLevelILSSARegisterList BinaryNinja::LowLevelILInstruction::GetSourceSSARegisters ( ) const
inline

◆ GetSourceSSARegisterStacks() [1/2]

template<BNLowLevelILOperation N>
LowLevelILSSARegisterStackList BinaryNinja::LowLevelILInstruction::GetSourceSSARegisterStacks ( ) const
inline

◆ GetSourceSSAFlags() [1/2]

template<BNLowLevelILOperation N>
LowLevelILSSAFlagList BinaryNinja::LowLevelILInstruction::GetSourceSSAFlags ( ) const
inline

◆ GetOutputRegisterOrFlagList() [1/2]

template<BNLowLevelILOperation N>
LowLevelILRegisterOrFlagList BinaryNinja::LowLevelILInstruction::GetOutputRegisterOrFlagList ( ) const
inline

◆ GetOutputSSARegisterOrFlagList() [1/2]

template<BNLowLevelILOperation N>
LowLevelILSSARegisterOrFlagList BinaryNinja::LowLevelILInstruction::GetOutputSSARegisterOrFlagList ( ) const
inline

◆ GetSourceMemoryVersions() [1/2]

template<BNLowLevelILOperation N>
LowLevelILIndexList BinaryNinja::LowLevelILInstruction::GetSourceMemoryVersions ( ) const
inline

◆ GetTargets() [1/2]

template<BNLowLevelILOperation N>
LowLevelILIndexMap BinaryNinja::LowLevelILInstruction::GetTargets ( ) const
inline

◆ GetRegisterStackAdjustments() [1/2]

template<BNLowLevelILOperation N>
std::map< uint32_t, int32_t > BinaryNinja::LowLevelILInstruction::GetRegisterStackAdjustments ( ) const
inline

◆ SetDestSSAVersion()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetDestSSAVersion ( size_t  version)
inline

◆ SetSourceSSAVersion()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetSourceSSAVersion ( size_t  version)
inline

◆ SetHighSSAVersion()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetHighSSAVersion ( size_t  version)
inline

◆ SetLowSSAVersion()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetLowSSAVersion ( size_t  version)
inline

◆ SetStackSSAVersion()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetStackSSAVersion ( size_t  version)
inline

◆ SetTopSSAVersion()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetTopSSAVersion ( size_t  version)
inline

◆ SetDestMemoryVersion()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetDestMemoryVersion ( size_t  version)
inline

◆ SetSourceMemoryVersion()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetSourceMemoryVersion ( size_t  version)
inline

◆ SetOutputSSARegisters()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetOutputSSARegisters ( const std::vector< SSARegister > &  regs)
inline

◆ SetOutputSSARegisterOrFlagList()

template<BNLowLevelILOperation N>
void BinaryNinja::LowLevelILInstruction::SetOutputSSARegisterOrFlagList ( const std::vector< SSARegisterOrFlag > &  outputs)
inline

◆ GetOperandIndexForUsage()

bool LowLevelILInstruction::GetOperandIndexForUsage ( LowLevelILOperandUsage  usage,
size_t &  operandIndex 
) const

◆ GetSourceExpr() [2/2]

LowLevelILInstruction LowLevelILInstruction::GetSourceExpr ( ) const

◆ GetSourceRegister() [2/2]

uint32_t LowLevelILInstruction::GetSourceRegister ( ) const

◆ GetSourceRegisterStack() [2/2]

uint32_t LowLevelILInstruction::GetSourceRegisterStack ( ) const

◆ GetSourceFlag() [2/2]

uint32_t LowLevelILInstruction::GetSourceFlag ( ) const

◆ GetSourceSSARegister() [2/2]

SSARegister LowLevelILInstruction::GetSourceSSARegister ( ) const

◆ GetSourceSSARegisterStack() [2/2]

SSARegisterStack LowLevelILInstruction::GetSourceSSARegisterStack ( ) const

◆ GetSourceSSAFlag() [2/2]

SSAFlag LowLevelILInstruction::GetSourceSSAFlag ( ) const

◆ GetDestExpr() [2/2]

LowLevelILInstruction LowLevelILInstruction::GetDestExpr ( ) const

◆ GetDestRegister() [2/2]

uint32_t LowLevelILInstruction::GetDestRegister ( ) const

◆ GetDestRegisterStack() [2/2]

uint32_t LowLevelILInstruction::GetDestRegisterStack ( ) const

◆ GetDestFlag() [2/2]

uint32_t LowLevelILInstruction::GetDestFlag ( ) const

◆ GetDestSSARegister() [2/2]

SSARegister LowLevelILInstruction::GetDestSSARegister ( ) const

◆ GetDestSSARegisterStack() [2/2]

SSARegisterStack LowLevelILInstruction::GetDestSSARegisterStack ( ) const

◆ GetDestSSAFlag() [2/2]

SSAFlag LowLevelILInstruction::GetDestSSAFlag ( ) const

◆ GetSemanticFlagClass() [2/2]

uint32_t LowLevelILInstruction::GetSemanticFlagClass ( ) const

◆ GetSemanticFlagGroup() [2/2]

uint32_t LowLevelILInstruction::GetSemanticFlagGroup ( ) const

◆ GetPartialRegister() [2/2]

uint32_t LowLevelILInstruction::GetPartialRegister ( ) const

◆ GetStackSSARegister() [2/2]

SSARegister LowLevelILInstruction::GetStackSSARegister ( ) const

◆ GetTopSSARegister() [2/2]

SSARegister LowLevelILInstruction::GetTopSSARegister ( ) const

◆ GetLeftExpr() [2/2]

LowLevelILInstruction LowLevelILInstruction::GetLeftExpr ( ) const

◆ GetRightExpr() [2/2]

LowLevelILInstruction LowLevelILInstruction::GetRightExpr ( ) const

◆ GetCarryExpr() [2/2]

LowLevelILInstruction LowLevelILInstruction::GetCarryExpr ( ) const

◆ GetConditionExpr() [2/2]

LowLevelILInstruction LowLevelILInstruction::GetConditionExpr ( ) const

◆ GetHighRegister() [2/2]

uint32_t LowLevelILInstruction::GetHighRegister ( ) const

◆ GetHighSSARegister() [2/2]

SSARegister LowLevelILInstruction::GetHighSSARegister ( ) const

◆ GetLowRegister() [2/2]

uint32_t LowLevelILInstruction::GetLowRegister ( ) const

◆ GetLowSSARegister() [2/2]

SSARegister LowLevelILInstruction::GetLowSSARegister ( ) const

◆ GetIntrinsic() [2/2]

uint32_t LowLevelILInstruction::GetIntrinsic ( ) const

◆ GetConstant() [2/2]

int64_t LowLevelILInstruction::GetConstant ( ) const

◆ GetOffset() [2/2]

uint64_t LowLevelILInstruction::GetOffset ( ) const

◆ GetVector() [2/2]

int64_t LowLevelILInstruction::GetVector ( ) const

◆ GetStackAdjustment() [2/2]

int64_t LowLevelILInstruction::GetStackAdjustment ( ) const

◆ GetTarget() [2/2]

size_t LowLevelILInstruction::GetTarget ( ) const

◆ GetTrueTarget() [2/2]

size_t LowLevelILInstruction::GetTrueTarget ( ) const

◆ GetFalseTarget() [2/2]

size_t LowLevelILInstruction::GetFalseTarget ( ) const

◆ GetBitIndex() [2/2]

size_t LowLevelILInstruction::GetBitIndex ( ) const

◆ GetSourceMemoryVersion() [2/2]

size_t LowLevelILInstruction::GetSourceMemoryVersion ( ) const

◆ GetDestMemoryVersion() [2/2]

size_t LowLevelILInstruction::GetDestMemoryVersion ( ) const

◆ GetFlagCondition() [2/2]

BNLowLevelILFlagCondition LowLevelILInstruction::GetFlagCondition ( ) const

◆ GetOutputSSARegisters() [2/2]

LowLevelILSSARegisterList LowLevelILInstruction::GetOutputSSARegisters ( ) const

◆ GetParameterExprs() [2/2]

LowLevelILInstructionList LowLevelILInstruction::GetParameterExprs ( ) const

◆ GetSourceSSARegisters() [2/2]

LowLevelILSSARegisterList LowLevelILInstruction::GetSourceSSARegisters ( ) const

◆ GetSourceSSARegisterStacks() [2/2]

LowLevelILSSARegisterStackList LowLevelILInstruction::GetSourceSSARegisterStacks ( ) const

◆ GetSourceSSAFlags() [2/2]

LowLevelILSSAFlagList LowLevelILInstruction::GetSourceSSAFlags ( ) const

◆ GetOutputRegisterOrFlagList() [2/2]

LowLevelILRegisterOrFlagList LowLevelILInstruction::GetOutputRegisterOrFlagList ( ) const

◆ GetOutputSSARegisterOrFlagList() [2/2]

LowLevelILSSARegisterOrFlagList LowLevelILInstruction::GetOutputSSARegisterOrFlagList ( ) const

◆ GetSourceMemoryVersions() [2/2]

LowLevelILIndexList LowLevelILInstruction::GetSourceMemoryVersions ( ) const

◆ GetTargets() [2/2]

LowLevelILIndexMap LowLevelILInstruction::GetTargets ( ) const

◆ GetRegisterStackAdjustments() [2/2]

map< uint32_t, int32_t > LowLevelILInstruction::GetRegisterStackAdjustments ( ) const

◆ BinaryNinja::LowLevelILOperand

class BinaryNinja::LowLevelILOperand

Public Member Functions

 LowLevelILOperand (const LowLevelILInstruction &instr, LowLevelILOperandUsage usage, size_t operandIndex)
 
LowLevelILOperandType GetType () const
 
LowLevelILOperandUsage GetUsage () const
 
uint64_t GetInteger () const
 
size_t GetIndex () const
 
LowLevelILInstruction GetExpr () const
 
uint32_t GetRegister () const
 
uint32_t GetRegisterStack () const
 
uint32_t GetFlag () const
 
uint32_t GetSemanticFlagClass () const
 
uint32_t GetSemanticFlagGroup () const
 
uint32_t GetIntrinsic () const
 
BNLowLevelILFlagCondition GetFlagCondition () const
 
SSARegister GetSSARegister () const
 
SSARegisterStack GetSSARegisterStack () const
 
SSAFlag GetSSAFlag () const
 
LowLevelILIndexList GetIndexList () const
 
LowLevelILIndexMap GetIndexMap () const
 
LowLevelILInstructionList GetExprList () const
 
LowLevelILSSARegisterList GetSSARegisterList () const
 
LowLevelILSSARegisterStackList GetSSARegisterStackList () const
 
LowLevelILSSAFlagList GetSSAFlagList () const
 
LowLevelILRegisterOrFlagList GetRegisterOrFlagList () const
 
LowLevelILSSARegisterOrFlagList GetSSARegisterOrFlagList () const
 
std::map< uint32_t, int32_t > GetRegisterStackAdjustments () const
 

Constructor & Destructor Documentation

◆ LowLevelILOperand()

LowLevelILOperand::LowLevelILOperand ( const LowLevelILInstruction instr,
LowLevelILOperandUsage  usage,
size_t  operandIndex 
)

Member Function Documentation

◆ GetType()

LowLevelILOperandType BinaryNinja::LowLevelILOperand::GetType ( ) const
inline

◆ GetUsage()

LowLevelILOperandUsage BinaryNinja::LowLevelILOperand::GetUsage ( ) const
inline

◆ GetInteger()

uint64_t LowLevelILOperand::GetInteger ( ) const

◆ GetIndex()

size_t LowLevelILOperand::GetIndex ( ) const

◆ GetExpr()

LowLevelILInstruction LowLevelILOperand::GetExpr ( ) const

◆ GetRegister()

uint32_t LowLevelILOperand::GetRegister ( ) const

◆ GetRegisterStack()

uint32_t LowLevelILOperand::GetRegisterStack ( ) const

◆ GetFlag()

uint32_t LowLevelILOperand::GetFlag ( ) const

◆ GetSemanticFlagClass()

uint32_t LowLevelILOperand::GetSemanticFlagClass ( ) const

◆ GetSemanticFlagGroup()

uint32_t LowLevelILOperand::GetSemanticFlagGroup ( ) const

◆ GetIntrinsic()

uint32_t LowLevelILOperand::GetIntrinsic ( ) const

◆ GetFlagCondition()

BNLowLevelILFlagCondition LowLevelILOperand::GetFlagCondition ( ) const

◆ GetSSARegister()

SSARegister LowLevelILOperand::GetSSARegister ( ) const

◆ GetSSARegisterStack()

SSARegisterStack LowLevelILOperand::GetSSARegisterStack ( ) const

◆ GetSSAFlag()

SSAFlag LowLevelILOperand::GetSSAFlag ( ) const

◆ GetIndexList()

LowLevelILIndexList LowLevelILOperand::GetIndexList ( ) const

◆ GetIndexMap()

LowLevelILIndexMap LowLevelILOperand::GetIndexMap ( ) const

◆ GetExprList()

LowLevelILInstructionList LowLevelILOperand::GetExprList ( ) const

◆ GetSSARegisterList()

LowLevelILSSARegisterList LowLevelILOperand::GetSSARegisterList ( ) const

◆ GetSSARegisterStackList()

LowLevelILSSARegisterStackList LowLevelILOperand::GetSSARegisterStackList ( ) const

◆ GetSSAFlagList()

LowLevelILSSAFlagList LowLevelILOperand::GetSSAFlagList ( ) const

◆ GetRegisterOrFlagList()

LowLevelILRegisterOrFlagList LowLevelILOperand::GetRegisterOrFlagList ( ) const

◆ GetSSARegisterOrFlagList()

LowLevelILSSARegisterOrFlagList LowLevelILOperand::GetSSARegisterOrFlagList ( ) const

◆ GetRegisterStackAdjustments()

map< uint32_t, int32_t > LowLevelILOperand::GetRegisterStackAdjustments ( ) const

◆ BinaryNinja::LowLevelILOperandList

class BinaryNinja::LowLevelILOperandList

Public Types

typedef ListIterator const_iterator
 

Public Member Functions

 LowLevelILOperandList (const LowLevelILInstruction &instr, const std::vector< LowLevelILOperandUsage > &usageList, const std::unordered_map< LowLevelILOperandUsage, size_t > &operandIndexMap)
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
const LowLevelILOperand operator[] (size_t i) const
 
 operator std::vector< LowLevelILOperand > () const
 

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ LowLevelILOperandList()

LowLevelILOperandList::LowLevelILOperandList ( const LowLevelILInstruction instr,
const std::vector< LowLevelILOperandUsage > &  usageList,
const std::unordered_map< LowLevelILOperandUsage, size_t > &  operandIndexMap 
)

Member Function Documentation

◆ begin()

LowLevelILOperandList::const_iterator LowLevelILOperandList::begin ( ) const

◆ end()

LowLevelILOperandList::const_iterator LowLevelILOperandList::end ( ) const

◆ size()

size_t LowLevelILOperandList::size ( ) const

◆ operator[]()

const LowLevelILOperand LowLevelILOperandList::operator[] ( size_t  i) const

◆ operator std::vector< LowLevelILOperand >()

BinaryNinja::LowLevelILOperandList::operator std::vector< LowLevelILOperand > ( ) const

Enumeration Type Documentation

◆ LowLevelILOperandType

Enumerator
IntegerLowLevelOperand 
IndexLowLevelOperand 
ExprLowLevelOperand 
RegisterLowLevelOperand 
RegisterStackLowLevelOperand 
FlagLowLevelOperand 
FlagConditionLowLevelOperand 
IntrinsicLowLevelOperand 
SemanticFlagClassLowLevelOperand 
SemanticFlagGroupLowLevelOperand 
SSARegisterLowLevelOperand 
SSARegisterStackLowLevelOperand 
SSAFlagLowLevelOperand 
IndexListLowLevelOperand 
IndexMapLowLevelOperand 
ExprListLowLevelOperand 
RegisterOrFlagListLowLevelOperand 
SSARegisterListLowLevelOperand 
SSARegisterStackListLowLevelOperand 
SSAFlagListLowLevelOperand 
SSARegisterOrFlagListLowLevelOperand 
RegisterStackAdjustmentsLowLevelOperand 

◆ LowLevelILOperandUsage

Enumerator
SourceExprLowLevelOperandUsage 
SourceRegisterLowLevelOperandUsage 
SourceRegisterStackLowLevelOperandUsage 
SourceFlagLowLevelOperandUsage 
SourceSSARegisterLowLevelOperandUsage 
SourceSSARegisterStackLowLevelOperandUsage 
SourceSSAFlagLowLevelOperandUsage 
DestExprLowLevelOperandUsage 
DestRegisterLowLevelOperandUsage 
DestRegisterStackLowLevelOperandUsage 
DestFlagLowLevelOperandUsage 
DestSSARegisterLowLevelOperandUsage 
DestSSARegisterStackLowLevelOperandUsage 
DestSSAFlagLowLevelOperandUsage 
SemanticFlagClassLowLevelOperandUsage 
SemanticFlagGroupLowLevelOperandUsage 
PartialRegisterLowLevelOperandUsage 
PartialSSARegisterStackSourceLowLevelOperandUsage 
StackSSARegisterLowLevelOperandUsage 
StackMemoryVersionLowLevelOperandUsage 
TopSSARegisterLowLevelOperandUsage 
LeftExprLowLevelOperandUsage 
RightExprLowLevelOperandUsage 
CarryExprLowLevelOperandUsage 
ConditionExprLowLevelOperandUsage 
HighRegisterLowLevelOperandUsage 
HighSSARegisterLowLevelOperandUsage 
LowRegisterLowLevelOperandUsage 
LowSSARegisterLowLevelOperandUsage 
IntrinsicLowLevelOperandUsage 
ConstantLowLevelOperandUsage 
VectorLowLevelOperandUsage 
StackAdjustmentLowLevelOperandUsage 
TargetLowLevelOperandUsage 
TrueTargetLowLevelOperandUsage 
FalseTargetLowLevelOperandUsage 
BitIndexLowLevelOperandUsage 
SourceMemoryVersionLowLevelOperandUsage 
DestMemoryVersionLowLevelOperandUsage 
FlagConditionLowLevelOperandUsage 
OutputSSARegistersLowLevelOperandUsage 
OutputMemoryVersionLowLevelOperandUsage 
ParameterExprsLowLevelOperandUsage 
SourceSSARegistersLowLevelOperandUsage 
SourceSSARegisterStacksLowLevelOperandUsage 
SourceSSAFlagsLowLevelOperandUsage 
OutputRegisterOrFlagListLowLevelOperandUsage 
OutputSSARegisterOrFlagListLowLevelOperandUsage 
SourceMemoryVersionsLowLevelOperandUsage 
TargetsLowLevelOperandUsage 
RegisterStackAdjustmentsLowLevelOperandUsage 
OffsetLowLevelOperandUsage