From e9604c37df479a991d131d9540fafe78c7a0f7d4 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Thu, 9 Nov 2023 18:39:55 -0500 Subject: Add LLIL/MLIL instructions to describe integer vs. floating point argument usage --- mediumlevelilinstruction.h | 79 ++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 37 deletions(-) (limited to 'mediumlevelilinstruction.h') diff --git a/mediumlevelilinstruction.h b/mediumlevelilinstruction.h index bcac516b..bdf65e9c 100644 --- a/mediumlevelilinstruction.h +++ b/mediumlevelilinstruction.h @@ -131,8 +131,8 @@ namespace BinaryNinja OutputSSAMemoryVersionMediumLevelOperandUsage, ParameterExprsMediumLevelOperandUsage, SourceExprsMediumLevelOperandUsage, - ParameterVariablesMediumLevelOperandUsage, - ParameterSSAVariablesMediumLevelOperandUsage, + UntypedParameterExprsMediumLevelOperandUsage, + UntypedParameterSSAExprsMediumLevelOperandUsage, ParameterSSAMemoryVersionMediumLevelOperandUsage, SourceSSAVariablesMediumLevelOperandUsages }; @@ -733,16 +733,6 @@ namespace BinaryNinja return As().GetSourceExprs(); } template - MediumLevelILVariableList GetParameterVariables() const - { - return As().GetParameterVariables(); - } - template - MediumLevelILSSAVariableList GetParameterSSAVariables() const - { - return As().GetParameterSSAVariables(); - } - template MediumLevelILSSAVariableList GetSourceSSAVariables() const { return As().GetSourceSSAVariables(); @@ -784,11 +774,6 @@ namespace BinaryNinja As().SetOutputSSAVariables(vars); } template - void SetParameterSSAVariables(const _STD_VECTOR& vars) - { - As().SetParameterSSAVariables(vars); - } - template void SetParameterExprs(const _STD_VECTOR& params) { As().SetParameterExprs(params); @@ -844,8 +829,6 @@ namespace BinaryNinja MediumLevelILSSAVariableList GetOutputSSAVariables() const; MediumLevelILInstructionList GetParameterExprs() const; MediumLevelILInstructionList GetSourceExprs() const; - MediumLevelILVariableList GetParameterVariables() const; - MediumLevelILSSAVariableList GetParameterSSAVariables() const; MediumLevelILSSAVariableList GetSourceSSAVariables() const; }; @@ -1189,9 +1172,9 @@ namespace BinaryNinja return GetRawOperandAsExpr(0).GetRawOperandAsVariableList(0); } MediumLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(1); } - MediumLevelILVariableList GetParameterVariables() const + MediumLevelILInstructionList GetParameterExprs() const { - return GetRawOperandAsExpr(2).GetRawOperandAsVariableList(0); + return GetRawOperandAsExpr(2).GetRawOperandAsExprList(0); } MediumLevelILInstruction GetStackExpr() const { return GetRawOperandAsExpr(3); } }; @@ -1208,9 +1191,9 @@ namespace BinaryNinja { return GetRawOperandAsExpr(0).GetRawOperandAsVariableList(0); } - MediumLevelILVariableList GetParameterVariables() const + MediumLevelILInstructionList GetParameterExprs() const { - return GetRawOperandAsExpr(1).GetRawOperandAsVariableList(0); + return GetRawOperandAsExpr(1).GetRawOperandAsExprList(0); } MediumLevelILInstruction GetStackExpr() const { return GetRawOperandAsExpr(2); } }; @@ -1229,12 +1212,22 @@ namespace BinaryNinja return GetRawOperandAsExpr(0).GetRawOperandAsVariableList(0); } MediumLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(1); } - MediumLevelILVariableList GetParameterVariables() const + MediumLevelILInstructionList GetParameterExprs() const { - return GetRawOperandAsExpr(2).GetRawOperandAsVariableList(0); + return GetRawOperandAsExpr(2).GetRawOperandAsExprList(0); } MediumLevelILInstruction GetStackExpr() const { return GetRawOperandAsExpr(3); } }; + template <> + struct MediumLevelILInstructionAccessor : public MediumLevelILInstructionBase + { + MediumLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(0); } + }; + template <> + struct MediumLevelILInstructionAccessor : public MediumLevelILInstructionBase + { + MediumLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(0); } + }; template <> struct MediumLevelILInstructionAccessor : public MediumLevelILInstructionBase @@ -1268,9 +1261,9 @@ namespace BinaryNinja return GetRawOperandAsExpr(0).GetRawOperandAsSSAVariableList(1); } MediumLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(1); } - MediumLevelILSSAVariableList GetParameterSSAVariables() const + MediumLevelILInstructionList GetParameterExprs() const { - return GetRawOperandAsExpr(2).GetRawOperandAsSSAVariableList(1); + return GetRawOperandAsExpr(2).GetRawOperandAsExprList(1); } size_t GetSourceMemoryVersion() const { return GetRawOperandAsExpr(2).GetRawOperandAsIndex(0); } MediumLevelILInstruction GetStackExpr() const { return GetRawOperandAsExpr(3); } @@ -1280,9 +1273,13 @@ namespace BinaryNinja { GetRawOperandAsExpr(0).UpdateRawOperandAsSSAVariableList(1, vars); } - void SetParameterSSAVariables(const _STD_VECTOR& vars) + void SetParameterExprs(const _STD_VECTOR& params) + { + GetRawOperandAsExpr(2).UpdateRawOperandAsExprList(1, params); + } + void SetParameterExprs(const _STD_VECTOR& params) { - GetRawOperandAsExpr(2).UpdateRawOperandAsSSAVariableList(1, vars); + GetRawOperandAsExpr(2).UpdateRawOperandAsExprList(1, params); } }; template <> @@ -1315,9 +1312,9 @@ namespace BinaryNinja { return GetRawOperandAsExpr(0).GetRawOperandAsSSAVariableList(1); } - MediumLevelILSSAVariableList GetParameterSSAVariables() const + MediumLevelILInstructionList GetParameterExprs() const { - return GetRawOperandAsExpr(1).GetRawOperandAsSSAVariableList(1); + return GetRawOperandAsExpr(1).GetRawOperandAsExprList(1); } size_t GetSourceMemoryVersion() const { return GetRawOperandAsExpr(1).GetRawOperandAsIndex(0); } MediumLevelILInstruction GetStackExpr() const { return GetRawOperandAsExpr(2); } @@ -1327,9 +1324,13 @@ namespace BinaryNinja { GetRawOperandAsExpr(0).UpdateRawOperandAsSSAVariableList(1, vars); } - void SetParameterSSAVariables(const _STD_VECTOR& vars) + void SetParameterExprs(const _STD_VECTOR& params) + { + GetRawOperandAsExpr(1).UpdateRawOperandAsExprList(1, params); + } + void SetParameterExprs(const _STD_VECTOR& params) { - GetRawOperandAsExpr(1).UpdateRawOperandAsSSAVariableList(1, vars); + GetRawOperandAsExpr(1).UpdateRawOperandAsExprList(1, params); } }; template <> @@ -1364,9 +1365,9 @@ namespace BinaryNinja return GetRawOperandAsExpr(0).GetRawOperandAsSSAVariableList(1); } MediumLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(1); } - MediumLevelILSSAVariableList GetParameterSSAVariables() const + MediumLevelILInstructionList GetParameterExprs() const { - return GetRawOperandAsExpr(2).GetRawOperandAsSSAVariableList(1); + return GetRawOperandAsExpr(2).GetRawOperandAsExprList(1); } size_t GetSourceMemoryVersion() const { return GetRawOperandAsExpr(2).GetRawOperandAsIndex(0); } MediumLevelILInstruction GetStackExpr() const { return GetRawOperandAsExpr(3); } @@ -1376,9 +1377,13 @@ namespace BinaryNinja { GetRawOperandAsExpr(0).UpdateRawOperandAsSSAVariableList(1, vars); } - void SetParameterSSAVariables(const _STD_VECTOR& vars) + void SetParameterExprs(const _STD_VECTOR& params) + { + GetRawOperandAsExpr(2).UpdateRawOperandAsExprList(1, params); + } + void SetParameterExprs(const _STD_VECTOR& params) { - GetRawOperandAsExpr(2).UpdateRawOperandAsSSAVariableList(1, vars); + GetRawOperandAsExpr(2).UpdateRawOperandAsExprList(1, params); } }; -- cgit v1.3.1