diff options
| author | Brian Potchik <brian@vector35.com> | 2024-03-02 14:38:47 -0500 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2024-03-02 14:38:47 -0500 |
| commit | 2e3b9c925390cc8b1d72a41d0564bb2862d3dba2 (patch) | |
| tree | f40495cd494b8c157a0298259019873a624dc7e2 /lowlevelilinstruction.h | |
| parent | ff2aa7435c3847f6969364f5d04d0943918429be (diff) | |
Add support for memory intrinsics.
Diffstat (limited to 'lowlevelilinstruction.h')
| -rw-r--r-- | lowlevelilinstruction.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lowlevelilinstruction.h b/lowlevelilinstruction.h index e51a11cf..898e72b8 100644 --- a/lowlevelilinstruction.h +++ b/lowlevelilinstruction.h @@ -240,6 +240,7 @@ namespace BinaryNinja SourceSSAFlagsLowLevelOperandUsage, OutputRegisterOrFlagListLowLevelOperandUsage, OutputSSARegisterOrFlagListLowLevelOperandUsage, + OutputMemoryIntrinsicLowLevelOperandUsage, SourceMemoryVersionsLowLevelOperandUsage, TargetsLowLevelOperandUsage, RegisterStackAdjustmentsLowLevelOperandUsage, @@ -1701,6 +1702,27 @@ namespace BinaryNinja UpdateRawOperandAsSSARegisterOrFlagList(0, outputs); } }; + template <> + struct LowLevelILInstructionAccessor<LLIL_MEMORY_INTRINSIC_SSA> : public LowLevelILInstructionBase + { + LowLevelILSSARegisterOrFlagList GetOutputSSARegisterOrFlagList() const + { + return GetRawOperandAsExpr(0).GetRawOperandAsSSARegisterOrFlagList(1); + } + size_t GetDestMemoryVersion() const { return GetRawOperandAsExpr(0).GetRawOperandAsIndex(0); } + size_t GetSourceMemoryVersion() const { return GetRawOperandAsIndex(3); } + uint32_t GetIntrinsic() const { return GetRawOperandAsRegister(1); } + LowLevelILInstructionList GetParameterExprs() const + { + return GetRawOperandAsExpr(2).GetRawOperandAsExprList(0); + } + void SetDestMemoryVersion(size_t version) { GetRawOperandAsExpr(0).UpdateRawOperand(0, version); } + void SetSourceMemoryVersion(size_t version) { UpdateRawOperand(3, version); } + void SetOutputSSARegisterOrFlagList(const _STD_VECTOR<SSARegisterOrFlag>& outputs) + { + GetRawOperandAsExpr(0).UpdateRawOperandAsSSARegisterOrFlagList(1, outputs); + } + }; template <> struct LowLevelILInstructionAccessor<LLIL_SEPARATE_PARAM_LIST_SSA> : public LowLevelILInstructionBase |
