From 4072c101bebea857722305954231e00590bfe1cc Mon Sep 17 00:00:00 2001 From: Alexander Khosrowshahi Date: Wed, 18 Jun 2025 17:05:13 -0400 Subject: Add support for ternary simplification in Psuedo C and disable in graph view --- lang/c/pseudoc.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lang/c/pseudoc.h') 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 CanSimplifyToTernary( + const BinaryNinja::HighLevelILInstruction& instr + ) const; + bool TryEmitSimplifiedTernary( + const BinaryNinja::HighLevelILInstruction& instr, + BinaryNinja::DisassemblySettings* settings, + BinaryNinja::HighLevelILTokenEmitter& emitter + ); + BinaryNinja::Ref GetFieldType(const BinaryNinja::HighLevelILInstruction& var, bool deref); FieldDisplayType GetFieldDisplayType(BinaryNinja::Ref type, uint64_t offset, size_t memberIndex, bool deref); -- cgit v1.3.1