diff options
Diffstat (limited to 'lang/c/pseudoc.h')
| -rw-r--r-- | lang/c/pseudoc.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lang/c/pseudoc.h b/lang/c/pseudoc.h index d983b2d9..ca723272 100644 --- a/lang/c/pseudoc.h +++ b/lang/c/pseudoc.h @@ -1,6 +1,7 @@ #pragma once #include "binaryninjaapi.h" +#include "highlevelilinstruction.h" class PseudoCFunction: public BinaryNinja::LanguageRepresentationFunction { @@ -15,6 +16,23 @@ class PseudoCFunction: public BinaryNinja::LanguageRepresentationFunction FieldDisplayNone }; + struct TernaryInfo + { + BinaryNinja::HighLevelILInstruction conditional; + BinaryNinja::HighLevelILInstruction assignDest; + BinaryNinja::HighLevelILInstruction trueAssign; + BinaryNinja::HighLevelILInstruction falseAssign; + }; + + std::optional<PseudoCFunction::TernaryInfo> CanSimplifyToTernary( + const BinaryNinja::HighLevelILInstruction& instr + ) const; + bool TryEmitSimplifiedTernary( + const BinaryNinja::HighLevelILInstruction& instr, + BinaryNinja::DisassemblySettings* settings, + BinaryNinja::HighLevelILTokenEmitter& emitter + ); + BinaryNinja::Ref<BinaryNinja::Type> GetFieldType(const BinaryNinja::HighLevelILInstruction& var, bool deref); FieldDisplayType GetFieldDisplayType(BinaryNinja::Ref<BinaryNinja::Type> type, uint64_t offset, size_t memberIndex, bool deref); |
