diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2023-11-09 18:39:55 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2023-12-06 13:48:37 -0500 |
| commit | e9604c37df479a991d131d9540fafe78c7a0f7d4 (patch) | |
| tree | d1ac45fbc0da8dbfd3d09fec0625d11a5cfbc69e /mediumlevelilinstruction.h | |
| parent | 6e1a863a4b20d73610e88cb7d9adf676c1053fce (diff) | |
Add LLIL/MLIL instructions to describe integer vs. floating point argument usage
Diffstat (limited to 'mediumlevelilinstruction.h')
| -rw-r--r-- | mediumlevelilinstruction.h | 79 |
1 files changed, 42 insertions, 37 deletions
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<N>().GetSourceExprs(); } template <BNMediumLevelILOperation N> - MediumLevelILVariableList GetParameterVariables() const - { - return As<N>().GetParameterVariables(); - } - template <BNMediumLevelILOperation N> - MediumLevelILSSAVariableList GetParameterSSAVariables() const - { - return As<N>().GetParameterSSAVariables(); - } - template <BNMediumLevelILOperation N> MediumLevelILSSAVariableList GetSourceSSAVariables() const { return As<N>().GetSourceSSAVariables(); @@ -784,11 +774,6 @@ namespace BinaryNinja As<N>().SetOutputSSAVariables(vars); } template <BNMediumLevelILOperation N> - void SetParameterSSAVariables(const _STD_VECTOR<SSAVariable>& vars) - { - As<N>().SetParameterSSAVariables(vars); - } - template <BNMediumLevelILOperation N> void SetParameterExprs(const _STD_VECTOR<MediumLevelILInstruction>& params) { As<N>().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<MLIL_SEPARATE_PARAM_LIST> : public MediumLevelILInstructionBase + { + MediumLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(0); } + }; + template <> + struct MediumLevelILInstructionAccessor<MLIL_SHARED_PARAM_SLOT> : public MediumLevelILInstructionBase + { + MediumLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(0); } + }; template <> struct MediumLevelILInstructionAccessor<MLIL_CALL_SSA> : 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<SSAVariable>& vars) + void SetParameterExprs(const _STD_VECTOR<MediumLevelILInstruction>& params) + { + GetRawOperandAsExpr(2).UpdateRawOperandAsExprList(1, params); + } + void SetParameterExprs(const _STD_VECTOR<ExprId>& 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<SSAVariable>& vars) + void SetParameterExprs(const _STD_VECTOR<MediumLevelILInstruction>& params) + { + GetRawOperandAsExpr(1).UpdateRawOperandAsExprList(1, params); + } + void SetParameterExprs(const _STD_VECTOR<ExprId>& 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<SSAVariable>& vars) + void SetParameterExprs(const _STD_VECTOR<MediumLevelILInstruction>& params) + { + GetRawOperandAsExpr(2).UpdateRawOperandAsExprList(1, params); + } + void SetParameterExprs(const _STD_VECTOR<ExprId>& params) { - GetRawOperandAsExpr(2).UpdateRawOperandAsSSAVariableList(1, vars); + GetRawOperandAsExpr(2).UpdateRawOperandAsExprList(1, params); } }; |
