diff options
| author | Rusty Wagner <rusty@vector35.com> | 2017-04-21 01:41:34 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2017-04-21 01:41:34 -0400 |
| commit | e673afe4b958b5f8f808ff8457d0664ccecce93a (patch) | |
| tree | 99f8a50841a8266f72c78991c11234a6e876c838 /mediumlevelil.cpp | |
| parent | d50d190f297afcb9621b39eb1d351e9eae96271b (diff) | |
Using variable identifiers in MLIL
Diffstat (limited to 'mediumlevelil.cpp')
| -rw-r--r-- | mediumlevelil.cpp | 129 |
1 files changed, 2 insertions, 127 deletions
diff --git a/mediumlevelil.cpp b/mediumlevelil.cpp index 0b420a82..868f3f75 100644 --- a/mediumlevelil.cpp +++ b/mediumlevelil.cpp @@ -61,9 +61,9 @@ size_t MediumLevelILFunction::GetInstructionStart(Architecture* arch, uint64_t a ExprId MediumLevelILFunction::AddExpr(BNMediumLevelILOperation operation, size_t size, - ExprId a, ExprId b, ExprId c, ExprId d, ExprId e, ExprId f) + ExprId a, ExprId b, ExprId c, ExprId d, ExprId e) { - return BNMediumLevelILAddExpr(m_object, operation, size, a, b, c, d, e, f); + return BNMediumLevelILAddExpr(m_object, operation, size, a, b, c, d, e); } @@ -73,120 +73,6 @@ ExprId MediumLevelILFunction::AddInstruction(size_t expr) } -ExprId MediumLevelILFunction::SetVar(size_t size, const Variable& var, ExprId src) -{ - return AddExpr(MLIL_SET_VAR, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, src); -} - - -ExprId MediumLevelILFunction::SetVarField(size_t size, const Variable& var, int64_t offset, ExprId src) -{ - return AddExpr(MLIL_SET_VAR_FIELD, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, - offset, src); -} - - -ExprId MediumLevelILFunction::SetVarSplit(size_t size, const Variable& high, const Variable& low, ExprId src) -{ - return AddExpr(MLIL_SET_VAR_SPLIT, size, ((uint64_t)high.type << 32) | (uint64_t)high.index, high.storage, - ((uint64_t)low.type << 32) | (uint64_t)low.index, low.storage, src); -} - - -ExprId MediumLevelILFunction::SetVarSSA(size_t size, const Variable& var, size_t varIndex, ExprId src) -{ - return AddExpr(MLIL_SET_VAR_SSA, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, - varIndex, src); -} - - -ExprId MediumLevelILFunction::SetVarFieldSSA(size_t size, const Variable& var, size_t varIndex, - int64_t offset, ExprId src) -{ - return AddExpr(MLIL_SET_VAR_SSA_FIELD, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, - varIndex, offset, src); -} - - -ExprId MediumLevelILFunction::SetVarSplitSSA(size_t size, const Variable& high, size_t highIndex, - const Variable& low, size_t lowIndex, ExprId src) -{ - return AddExpr(MLIL_SET_VAR_SPLIT_SSA, size, - AddExpr(MLIL_VAR_SPLIT_DEST_SSA, size, ((uint64_t)high.type << 32) | (uint64_t)high.index, - high.storage, highIndex), - AddExpr(MLIL_VAR_SPLIT_DEST_SSA, size, ((uint64_t)low.type << 32) | (uint64_t)low.index, - low.storage, lowIndex), src); -} - - -ExprId MediumLevelILFunction::SetVarAliased(size_t size, const Variable& var, size_t destIndex, - size_t srcIndex, ExprId src) -{ - return AddExpr(MLIL_SET_VAR_ALIASED, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, - destIndex, srcIndex, src); -} - - -ExprId MediumLevelILFunction::SetVarFieldAliased(size_t size, const Variable& var, size_t destIndex, - size_t srcIndex, int64_t offset, ExprId src) -{ - return AddExpr(MLIL_SET_VAR_ALIASED_FIELD, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, - destIndex, srcIndex, offset, src); -} - - -ExprId MediumLevelILFunction::Var(size_t size, const Variable& var) -{ - return AddExpr(MLIL_VAR, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage); -} - - -ExprId MediumLevelILFunction::VarField(size_t size, const Variable& var, int64_t offset) -{ - return AddExpr(MLIL_VAR_FIELD, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, offset); -} - - -ExprId MediumLevelILFunction::VarSSA(size_t size, const Variable& var, size_t varIndex) -{ - return AddExpr(MLIL_VAR_SSA, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, varIndex); -} - - -ExprId MediumLevelILFunction::VarFieldSSA(size_t size, const Variable& var, int64_t offset, - size_t varIndex) -{ - return AddExpr(MLIL_VAR_SSA_FIELD, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, - offset, varIndex); -} - - -ExprId MediumLevelILFunction::VarAliased(size_t size, const Variable& var, size_t memIndex) -{ - return AddExpr(MLIL_VAR_ALIASED, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, memIndex); -} - - -ExprId MediumLevelILFunction::VarFieldAliased(size_t size, const Variable& var, int64_t offset, size_t memIndex) -{ - return AddExpr(MLIL_VAR_ALIASED_FIELD, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage, - offset, memIndex); -} - - -ExprId MediumLevelILFunction::AddressOf(size_t size, const Variable& var) -{ - return AddExpr(MLIL_ADDRESS_OF, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, var.storage); -} - - -ExprId MediumLevelILFunction::AddressOfField(size_t size, const Variable& var, int64_t offset) -{ - return AddExpr(MLIL_ADDRESS_OF_FIELD, size, ((uint64_t)var.type << 32) | (uint64_t)var.index, - var.storage, offset); -} - - ExprId MediumLevelILFunction::Goto(BNMediumLevelILLabel& label) { return BNMediumLevelILGoto(m_object, &label); @@ -239,17 +125,6 @@ ExprId MediumLevelILFunction::AddOperandList(const vector<ExprId> operands) } -Variable MediumLevelILFunction::GetVariable(ExprId i, size_t varOperand) -{ - BNMediumLevelILInstruction instr = (*this)[i]; - Variable result; - result.type = (BNVariableSourceType)(instr.operands[varOperand] >> 32); - result.index = (uint32_t)instr.operands[varOperand]; - result.storage = instr.operands[varOperand + 1]; - return result; -} - - BNMediumLevelILInstruction MediumLevelILFunction::operator[](size_t i) const { return BNGetMediumLevelILByIndex(m_object, i); |
