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

Class LowLevelILInstructionBase

lowlevelilinstruction.h:689–807  ·  view source on GitHub ↗

! \ingroup lowlevelil */

Source from the content-addressed store, hash-verified

687 \ingroup lowlevelil
688 */
689 struct LowLevelILInstructionBase : public BNLowLevelILInstruction
690 {
691#ifdef BINARYNINJACORE_LIBRARY
692 LowLevelILFunction* function;
693#else
694 Ref<LowLevelILFunction> function;
695#endif
696 size_t exprIndex, instructionIndex;
697
698 static _STD_UNORDERED_MAP<LowLevelILOperandUsage, LowLevelILOperandType> operandTypeForUsage;
699 static _STD_UNORDERED_MAP<BNLowLevelILOperation, _STD_VECTOR<LowLevelILOperandUsage>> operationOperandUsage;
700 static _STD_UNORDERED_MAP<BNLowLevelILOperation, _STD_UNORDERED_MAP<LowLevelILOperandUsage, size_t>>
701 operationOperandIndex;
702
703 LowLevelILOperandList GetOperands() const;
704
705 uint64_t GetRawOperandAsInteger(size_t operand) const;
706 uint32_t GetRawOperandAsRegister(size_t operand) const;
707 size_t GetRawOperandAsIndex(size_t operand) const;
708 BNLowLevelILFlagCondition GetRawOperandAsFlagCondition(size_t operand) const;
709 LowLevelILInstruction GetRawOperandAsExpr(size_t operand) const;
710 SSARegister GetRawOperandAsSSARegister(size_t operand) const;
711 SSARegisterStack GetRawOperandAsSSARegisterStack(size_t operand) const;
712 SSARegisterStack GetRawOperandAsPartialSSARegisterStackSource(size_t operand) const;
713 SSAFlag GetRawOperandAsSSAFlag(size_t operand) const;
714 LowLevelILIndexList GetRawOperandAsIndexList(size_t operand) const;
715 LowLevelILIndexMap GetRawOperandAsIndexMap(size_t operand) const;
716 LowLevelILInstructionList GetRawOperandAsExprList(size_t operand) const;
717 LowLevelILRegisterOrFlagList GetRawOperandAsRegisterOrFlagList(size_t operand) const;
718 LowLevelILSSARegisterList GetRawOperandAsSSARegisterList(size_t operand) const;
719 LowLevelILSSARegisterStackList GetRawOperandAsSSARegisterStackList(size_t operand) const;
720 LowLevelILSSAFlagList GetRawOperandAsSSAFlagList(size_t operand) const;
721 LowLevelILSSARegisterOrFlagList GetRawOperandAsSSARegisterOrFlagList(size_t operand) const;
722 _STD_MAP<uint32_t, int32_t> GetRawOperandAsRegisterStackAdjustments(size_t operand) const;
723 PossibleValueSet GetRawOperandAsPossibleValueSet(size_t operand) const;
724
725 void UpdateRawOperand(size_t operandIndex, ExprId value);
726 void UpdateRawOperandAsSSARegisterList(size_t operandIndex, const _STD_VECTOR<SSARegister>& regs);
727 void UpdateRawOperandAsSSARegisterOrFlagList(
728 size_t operandIndex, const _STD_VECTOR<SSARegisterOrFlag>& outputs);
729
730 RegisterValue GetValue() const;
731 PossibleValueSet GetPossibleValues(
732 const _STD_SET<BNDataFlowQueryOption>& options = _STD_SET<BNDataFlowQueryOption>()) const;
733
734 RegisterValue GetRegisterValue(uint32_t reg);
735 RegisterValue GetRegisterValueAfter(uint32_t reg);
736 PossibleValueSet GetPossibleRegisterValues(uint32_t reg);
737 PossibleValueSet GetPossibleRegisterValuesAfter(uint32_t reg);
738 RegisterValue GetFlagValue(uint32_t flag);
739 RegisterValue GetFlagValueAfter(uint32_t flag);
740 PossibleValueSet GetPossibleFlagValues(uint32_t flag);
741 PossibleValueSet GetPossibleFlagValuesAfter(uint32_t flag);
742 RegisterValue GetStackContents(int32_t offset, size_t len);
743 RegisterValue GetStackContentsAfter(int32_t offset, size_t len);
744 PossibleValueSet GetPossibleStackContents(int32_t offset, size_t len);
745 PossibleValueSet GetPossibleStackContentsAfter(int32_t offset, size_t len);
746

Callers

nothing calls this directly

Tested by

no test coverage detected