summaryrefslogtreecommitdiff
path: root/mediumlevelilinstruction.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2018-02-09 17:17:53 -0500
committerRusty Wagner <rusty@vector35.com>2018-02-09 17:17:53 -0500
commit79b5bdcf42f6abf1c8b2c4bda4c30b41319c4aa5 (patch)
tree7d20b2c03b44ccd65eff337a72fd700c075b42d5 /mediumlevelilinstruction.h
parent83c9c2bceeb354dcf53e338e9411c6636f418123 (diff)
Add instructions for tracking freed register stack slots
Diffstat (limited to 'mediumlevelilinstruction.h')
-rw-r--r--mediumlevelilinstruction.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/mediumlevelilinstruction.h b/mediumlevelilinstruction.h
index cdda87f5..a0c4fd9b 100644
--- a/mediumlevelilinstruction.h
+++ b/mediumlevelilinstruction.h
@@ -922,6 +922,18 @@ namespace BinaryNinja
void SetOutputSSAVariables(const std::vector<SSAVariable>& vars) { UpdateRawOperandAsSSAVariableList(0, vars); }
};
+ template <> struct MediumLevelILInstructionAccessor<MLIL_FREE_VAR_SLOT>: public MediumLevelILInstructionBase
+ {
+ Variable GetDestVariable() const { return GetRawOperandAsVariable(0); }
+ };
+ template <> struct MediumLevelILInstructionAccessor<MLIL_FREE_VAR_SLOT_SSA>: public MediumLevelILInstructionBase
+ {
+ SSAVariable GetDestSSAVariable() const { return GetRawOperandAsSSAVariable(0); }
+ SSAVariable GetSourceSSAVariable() const { return GetRawOperandAsPartialSSAVariableSource(0); }
+ void SetDestSSAVersion(size_t version) { UpdateRawOperand(1, version); }
+ void SetSourceSSAVersion(size_t version) { UpdateRawOperand(2, version); }
+ };
+
template <> struct MediumLevelILInstructionAccessor<MLIL_TRAP>: public MediumLevelILInstructionBase
{
int64_t GetVector() const { return GetRawOperandAsInteger(0); }